You know you should be calling SDL_SetVideoMode() when you get a SDL_RESIZEEVENT (or whatever its called) ? I've noticed (on Windows anyway) that even if you ignore the events the window gets resized by the window manager. By calling SDL_SetVideoMode, your screen surface should now contain the correct width and height.