diff --git a/src/video/fbcon/SDL_fbevents.c b/src/video/fbcon/SDL_fbevents.c
index 69d85067d50b8b27813dbef5b91d4289e865d7d0..70c22fc1b28d51f08e493c31303057aa84c15800 100644
--- a/src/video/fbcon/SDL_fbevents.c
+++ b/src/video/fbcon/SDL_fbevents.c
@@ -882,6 +882,7 @@ static void handle_mouse(_THIS)
  */
 static void switch_vt(_THIS, unsigned short which)
 {
+	struct fb_var_screeninfo vinfo;
 	struct vt_stat vtstate;
 	unsigned short v_active;
 	SDL_Surface *screen;
@@ -906,6 +907,7 @@ static void switch_vt(_THIS, unsigned short which)
 		memcpy(screen_contents, screen->pixels, screen_arealen);
 	}
 	FB_SavePaletteTo(this, 256, saved_pal);
+	ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo);
 	ioctl(keyboard_fd, KDSETMODE, KD_TEXT);
 
 	/* New console, switch to it */
@@ -923,6 +925,7 @@ static void switch_vt(_THIS, unsigned short which)
 
 	/* Restore graphics mode and the contents of the screen */
 	ioctl(keyboard_fd, KDSETMODE, KD_GRAPHICS);
+	ioctl(console_fd, FBIOPUT_VSCREENINFO, &vinfo);
 	FB_RestorePaletteFrom(this, 256, saved_pal);
 	if ( screen_contents ) {
 		memcpy(screen->pixels, screen_contents, screen_arealen);