Just had the same problem. I know it’s an old thread, but since it’s the first in google results, I’ll leave here solution for future developers. Snapping works for origin (usually center) of the object, not its borders, so if your object has an odd size (for example 125, not 124), it will divide this, leaving 0.5 off-the-grid for both sides. So, either make the size even, or change origin to the corner. Eeasiest way to do so - select object and then right click to one of the corners. It will snap it to the grid where it should be.