Excellent program, and a difficult problem to solve. After playing with it, I wanted to see if I could break it. Without gridsnap, it's impossble to be sure, but I made a slightly oversized 4-square L and a slightly undersized 2-square L and I think I was able to fool them (if grid perfect, should pack 4 inside 1)
Not marking you down for this, it was fun to try and find edge cases!