diff --git a/src/conio/bitmap_con.c b/src/conio/bitmap_con.c
index 74ce9726135dbd0a00d4f9ecfc3e3ebb5eb6651e..2d1dc95b76aa36ccde7df963df902062cf9bb21c 100644
--- a/src/conio/bitmap_con.c
+++ b/src/conio/bitmap_con.c
@@ -1765,6 +1765,8 @@ int bitmap_drv_init_mode(int mode, int *width, int *height, int maxwidth, int ma
 	if(!bitmap_initialized)
 		return(-1);
 
+	if (mode == _ORIGMODE)
+		mode = C80;
 	if(load_vmode(&vstat, mode)) {
 		return(-1);
 	}
diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c
index c5887eec7227051e4798926ae276b4462e1e9637..1724b8a24a642f7a598a70779dccf42a94e8801d 100644
--- a/src/conio/ciolib.c
+++ b/src/conio/ciolib.c
@@ -1770,6 +1770,9 @@ CIOLIBEXPORT struct ciolib_screen * ciolib_savescreen(void)
 	if (vmode != -1) {
 		ret->pixels = ciolib_getpixels(0, 0, vparams[vmode].xres - 1, vparams[vmode].yres - 1, FALSE);
 	}
+	else {
+		ret->pixels = NULL;
+	}
 	ciolib_vmem_gettext(1, 1, ret->text_info.screenwidth, ret->text_info.screenheight, ret->vmem);
 	ret->fg_colour = ciolib_fg;
 	ret->bg_colour = ciolib_bg;
diff --git a/src/conio/vidmodes.c b/src/conio/vidmodes.c
index 7738fae586f5d1abc686bb6b05832cc58955bf59..e7d3eb1e4f05ec617549fd98f70f7ec766282821 100644
--- a/src/conio/vidmodes.c
+++ b/src/conio/vidmodes.c
@@ -286,6 +286,8 @@ int find_vmode(int mode)
 {
     unsigned i;
 
+	if(mode==_ORIGMODE)
+		mode=C80;
 	for (i = 0; i < NUMMODES; i++)
 		if (vparams[i].mode == mode)
 			return i;
diff --git a/src/conio/win32cio.c b/src/conio/win32cio.c
index 66af5578a0ab957d25ce455b9f5edc344d87f807..8f7046fdf73d90fefb98b334ae056dc0b18f6120 100644
--- a/src/conio/win32cio.c
+++ b/src/conio/win32cio.c
@@ -632,10 +632,9 @@ void win32_textmode(int mode)
 	CONSOLE_SCREEN_BUFFER_INFOEX	bi;
 #endif
 
-	for(i=0;i<NUMMODES;i++) {
-		if(vparams[i].mode==mode)
-			modeidx=i;
-	}
+	modeidx = find_vmode(mode);
+	if (modeidx == -1)
+		modeidx = CO80;
 	sz.X = cio_textinfo.screenwidth > vparams[modeidx].cols ? cio_textinfo.screenwidth : vparams[modeidx].cols;
 	sz.Y = cio_textinfo.screenheight > vparams[modeidx].rows ? cio_textinfo.screenheight : vparams[modeidx].rows;
 	rc.Left=0;