Hi Mnemonic,
trying to understand (and hopefully fix) issue #12 (and maybe #14 but I'm not sure).
I believe this is dependent on the ratio of game resolution vs. screen resolution, and has also something to do with the pixel size of the overlay picture, and the (original) coordinates of the upper left point where to draw the overlay.
What I can observe is that parallax scrolling is jumpy, so even if a background is supposed to scroll smoothly with half the foreground scrolling speed from left to right, it occasionally looks like it jumps back and forth one pixel. Plus, as already reported, some overlay graphics are drawn with a white border (in my case at the bottom of the graphics), whether they have a pixel offset I cannot say.
It is correct that all bitmaps are drawn in the CBSubFrame::Draw function? I wonder whether the computations, combined with casts to (int) could be responsible for a pixel offset of one in special situations. There seem to be more casts in CBSurfaceSDL::DrawSprite without rounding. What's your opinion on this? I don't want to add rounding to all these computations without understanding what's going on.