diff --git a/src/conio/bitmap_con.c b/src/conio/bitmap_con.c
index fd8e5659516f5bf1b717882eb6325133f2bb2be4..2e180ec812f738d50b17648fba237d815523be79 100644
--- a/src/conio/bitmap_con.c
+++ b/src/conio/bitmap_con.c
@@ -1876,7 +1876,7 @@ int bitmap_drv_init_mode(int mode, int *width, int *height, int maxwidth, int ma
 	ns = bs;
 	while (ns < os) {
 		mult++;
-		bitmap_get_scaled_win_size(mult, &w, &h, maxwidth, maxheight);
+		bitmap_get_scaled_win_size(mult, &w, &h, 0, 0);
 		if ((maxwidth > 0) && (w > maxwidth)) {
 			mult--;
 			ns = ls;
@@ -1902,6 +1902,7 @@ int bitmap_drv_init_mode(int mode, int *width, int *height, int maxwidth, int ma
 	bitmap_get_scaled_win_size(mult, &w, &h, maxwidth, maxheight);
 	vstat.winwidth = w;
 	vstat.winheight = h;
+	vstat.scaling = mult;
 
 	return(0);
 }
diff --git a/src/conio/win32gdi.c b/src/conio/win32gdi.c
index 7b5b5d216aa22fc158f7ca09af7c9b9494c61e7d..50b12a78440af594e3979ca0e139c64f77a97521 100644
--- a/src/conio/win32gdi.c
+++ b/src/conio/win32gdi.c
@@ -926,6 +926,7 @@ gdi_textmode(int mode)
 	if (fullscreen) {
 		vstat.winwidth = mw;
 		vstat.winheight = mh;
+		vstat.scaling = bitmap_double_mult_inside(mw, mh);
 	}
 	gdi_setwinsize(vstat.winwidth, vstat.winheight);
 	pthread_mutex_unlock(&vstatlock);
diff --git a/src/conio/x_events.c b/src/conio/x_events.c
index d9a51e8251188c2ecfa0a030c48a18fa26d47053..3c2bfe57a638ed9240c3ff551e495fdec7d391c1 100644
--- a/src/conio/x_events.c
+++ b/src/conio/x_events.c
@@ -1169,7 +1169,8 @@ static void resize_window()
 			pthread_mutex_unlock(&vstatlock);
 		return;
 	}
-	resize = new_scaling != vstat.scaling;
+	bitmap_get_scaled_win_size(new_scaling, &width, &height, 0, 0);
+	resize = new_scaling != vstat.scaling || width != vstat.winwidth || height != vstat.winheight;
 	x_cvstat.scaling = vstat.scaling;
 	if (resize)
 		x11.XResizeWindow(dpy, win, width, height);
@@ -1195,7 +1196,6 @@ static void init_mode_internal(int mode)
 	os = vstat.scaling;
 	bitmap_drv_init_mode(mode, NULL, NULL, mw, mh);
 	x_cvstat = vstat;
-	x_cvstat.scaling = bitmap_double_mult_inside(vstat.winwidth, vstat.winheight);
 	vstat.winwidth = ow;
 	vstat.winheight = oh;
 	vstat.scaling = os;