This will happen if your pixel size doesn't evenly divide into your window size, or if your vertex position coordinates are not rounded up to integers. If you use fractional coordinates for your vertices eg: 0.33333f make sure the shader float precision for your vertex position is accurate enough, it's best to use whole integers though.
If your display is not divisible by pixel size then there are shaders you can use that smooth out the edges of the pixels without too much blurring. Not to plug RetroBlit too much but it comes with such a shader, and there's a bit of discussion on this problem here in the docs:
http://www.pixeltrollgames.com/RetroBlit/docs/doc/features.html#pixel_perfect_renderingAlso for most accurate pixel perfect results what you really want to do is create an off screen rendering texture that is the size of your pixel space (eg 480x270) and render everything to it at 1x scale, and then render this whole texture in the final pass scaled up to your native resolution size eg 1920x1080. This achieves two things, your pixels are all uniform, and for majority of your rendering the pixel fill rate is much lowerbecause you're targetting 480x270 pixels instead of 1920x1080, this lets you layer more effects, and have less regard for overdraw at higher performance.