WILL, get rid of these lines, you don't need them when using the SDL_OPENGL flag, and they might be screwing up the smoothness of your scrolling.

Code:
     flags := flags or SDL_DOUBLEBUF; //Enable double buffering
     flags := flags or SDL_HWPALETTE; //Store the palette in hardware

     // This checks to see if surfaces can be stored in memory
     if &#40; videoInfo.hw_available <> 0 &#41; then
       flags &#58;= flags or SDL_HWSURFACE
     else
       flags &#58;= flags or SDL_SWSURFACE;

     // This checks if hardware blits can be done
     if &#40; videoInfo.blit_hw <> 0 &#41; then
       flags &#58;= flags or SDL_HWACCEL;