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");