diff --git a/src/conio/x_events.c b/src/conio/x_events.c
index da9173eb2531f9831496176f76711cb391a368b7..437eb6e0853aa75dd3770341e6029eec1d2d7201 100644
--- a/src/conio/x_events.c
+++ b/src/conio/x_events.c
@@ -1469,8 +1469,10 @@ static void handle_resize_event(int width, int height, bool map)
 	bitmap_drv_request_pixels();
 	if (!got_first_resize) {
 		if (!fullscreen) {
+			pthread_mutex_lock(&vstatlock);
+			vstat.scaling = bitmap_double_mult_inside(width, height);
+			pthread_mutex_unlock(&vstatlock);
 			resize_window();
-			got_first_resize = true;
 		}
 	}
 }
@@ -1603,7 +1605,7 @@ is_fullscreen(void)
 }
 
 static void
-handle_configuration(int w, int h, bool map)
+handle_configuration(int w, int h, bool map, bool se)
 {
 	bool resize = false;
 
@@ -1613,7 +1615,7 @@ handle_configuration(int w, int h, bool map)
 	pthread_mutex_unlock(&vstatlock);
 	if (resize)
 		handle_resize_event(w, h, map);
-	if (w && h)
+	if (w && h && !se)
 		got_first_resize = true;
 }
 
@@ -1691,7 +1693,7 @@ x11_event(XEvent *ev)
 		/* Graphics related events */
 		case ConfigureNotify: {
 			/*
-			 * NOTE: The x/y values in the event are relative to root of send_event is true, and
+			 * NOTE: The x/y values in the event are relative to root if send_event is true, and
 			 * relative to the parent (which is the above member) if send_event is false.  Trying
 			 * to translate from parent to root in here is a bad idea as there's a race condition.
 			 * Basically, if we care about the x/y pos, we should not use it when send_event is
@@ -1705,7 +1707,7 @@ x11_event(XEvent *ev)
 					pending_height = ev->xconfigure.height;
 				}
 				else {
-					handle_configuration(ev->xconfigure.width, ev->xconfigure.height, false);
+					handle_configuration(ev->xconfigure.width, ev->xconfigure.height, false, ev->xconfigure.send_event);
 				}
 			}
 			break;
@@ -1713,7 +1715,7 @@ x11_event(XEvent *ev)
 		case MapNotify:
 			if (map_pending) {
 				map_pending = false;
-				handle_configuration(pending_width, pending_height, true);
+				handle_configuration(pending_width, pending_height, true, true);
 			}
 			break;
 		case NoExpose: