diff -Naur beebem-0.0.13/src/sdl.cpp beebem-0.0.13_menu_crash/src/sdl.cpp --- beebem-0.0.13/src/sdl.cpp 2006-11-06 00:38:32.000000000 +0000 +++ beebem-0.0.13_menu_crash/src/sdl.cpp 2008-07-06 08:28:52.000000000 +0100 @@ -571,6 +571,10 @@ //printf("2: flags set\n"); + /* Make sure screen surface was free'd. + */ + if (screen_ptr != NULL) Destroy_Screen(); + // if ( (screen_ptr=SDL_SetVideoMode(SDL_WINDOW_WIDTH, SDL_WINDOW_HEIGHT if ( (screen_ptr=SDL_SetVideoMode(width, height , 8, flags ) ) == NULL){ @@ -580,6 +584,10 @@ return false; } + /* Update GUI pointers to screen surface. + */ + ClearWindowsBackgroundCacheAndResetSurface(); + //printf("3: SDL_SetVideoMode called\n");