That's an inherent optical effect from unsyncronized displays. Even with syncronization (Vsync iopred mentioned) you can still get the effect appearing based on the amount of scroll. For example on the TV console game systems, if you scrolled a level by multiples of 2 (ie, shift the screen by 1, 2, 4, 8 etc pixels) each screen refresh, the effect would look perfectly smooth. But if you used a value like 3, 5, 6, 7 etc it looked blurry/jerky.

Weird but true.