I believe that this is your answer.
If you have a Window of 800x600 for example. The client area is less (eg 792x594 or something like that).
If you have set your D3DPRESENTPARAMETERS to 800 x 600 the DX screen will differ from your actual client area.
So, your sprites will be getting resized to fit and you will definately get the phenomenon that you are having.
If you run full screen, do you have the same problem (I am guessing not).
You're right, in fullscreen the issue does not appear to be present!
However, when trying to set the present parameters to the client area size, it didn't fix the issue when running it in a window.
This is what I was doing:
RECT tempRect; GetClientRect(hwndInput, &tempRect); d3dPresentationParameters.BackBufferWidth = tempRect.right; d3dPresentationParameters.BackBufferHeight = tempRect.bottom;