@david
You use alot of horizontal movement. My experience ist, that these movements often are very timing critical. This means, you have to watch very cearfully over your frame rate chain. All settings from software over GPU output to display needs to be the same frame settings or a multiple of the bevor one.
Secondly, the movement timings manners in the same way in conjunction with frame rate.
You do have a fixed number of horizontal pixels. As an object has to move over these pixels in a certain time, not every pixel row is shown.
Lets try an simple example and imagine a single pixel as an object. This pixel has to move 1000 pixels along in 20 seconds on a 50hz framerate. The pixel is moving one display pixel every frame.
But if you change the speed to lets say 22 sec the pixel would move 45,45 pixels per second. But as we can't show broken pixel, the object pixel has to jump over or stay longer on some displays pixels, instead of move one display pixel at a time.
If you would put this in a shemata where every number symbolizes the time the object stays in a display frame, it would be like this: 1,1,1,1,1,1 compared to 1,1,2,1,1,2 or 1,2,2,1,2,2
The human eye is recognising this as an error in certain situations and this effect is multiplied on large screens, as objects over jumping pixels, jump a longer distance. This makes it difficult to recognise it on small screens sometimes.
Best
Dill