diff --git a/src/conio/CMakeLists.txt b/src/conio/CMakeLists.txt
index 2925f5c4b7058f41e5f09a66be72ba54ca8196b2..6f5b1068ac4f47cd527dd0d82c1b95372c64356f 100644
--- a/src/conio/CMakeLists.txt
+++ b/src/conio/CMakeLists.txt
@@ -61,10 +61,6 @@ if(SDL_FOUND)
 	target_compile_definitions(ciolib PUBLIC WITH_SDL)
 endif()
 
-if(NEED_BITMAP)
-	target_compile_definitions(ciolib PUBLIC HAS_VSTAT)
-endif()
-
 if(NOT WIN32)
 	target_link_libraries(ciolib pthread)
 endif()
diff --git a/src/conio/bitmap_con.c b/src/conio/bitmap_con.c
index 147850a3c53af5a1b4d872fb102b0f451c0ef0f9..bb565b9f84ece95c1039bb3758094b7cba9fbeb9 100644
--- a/src/conio/bitmap_con.c
+++ b/src/conio/bitmap_con.c
@@ -577,6 +577,17 @@ int bitmap_getfont(void)
 	return(current_font);
 }
 
+void bitmap_setscaling(int new_value)
+{
+	if(new_value > 0)
+		vstat.scaling = new_value;
+}
+
+int bitmap_getscaling(void)
+{
+	return vstat.scaling;
+}
+
 /* Called from event thread only */
 int bitmap_loadfont(char *filename)
 {
diff --git a/src/conio/bitmap_con.h b/src/conio/bitmap_con.h
index 599746316f9f3f3257057c9c90b34a595705b7f3..2a7bf2b0ddd1d49eea75a4cfa15bf2b7f5185dec 100644
--- a/src/conio/bitmap_con.h
+++ b/src/conio/bitmap_con.h
@@ -28,5 +28,7 @@ void bitmap_getcustomcursor(int *s, int *e, int *r, int *b, int *v);
 void bitmap_setcustomcursor(int s, int e, int r, int b, int v);
 int bitmap_getvideoflags(void);
 void bitmap_setvideoflags(int flags);
+void bitmap_setscaling(int new_value);
+int bitmap_getscaling(void);
 
 #endif
diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c
index 707e5803eb1e87bfe53e63976b539a51f3b338b1..7e91c8b8fa30041e477fc20abbee9fd89f7111b5 100644
--- a/src/conio/ciolib.c
+++ b/src/conio/ciolib.c
@@ -113,6 +113,8 @@ CIOLIBEXPORT char * CIOLIBCALL ciolib_getpass(const char *prompt);
 CIOLIBEXPORT void CIOLIBCALL ciolib_copytext(const char *text, size_t buflen);
 CIOLIBEXPORT char * CIOLIBCALL ciolib_getcliptext(void);
 CIOLIBEXPORT int CIOLIBCALL ciolib_get_window_info(int *width, int *height, int *xpos, int *ypos);
+CIOLIBEXPORT void CIOLIBCALL ciolib_setscaling(int new_value);
+CIOLIBEXPORT int CIOLIBCALL ciolib_getscaling(void);
 
 #define CIOLIB_INIT()		{ if(initialized != 1) initciolib(CIOLIB_MODE_AUTO); }
 
@@ -152,6 +154,8 @@ int try_sdl_init(int mode)
 		cio_api.getcliptext=sdl_getcliptext;
 #endif
 		cio_api.get_window_info=sdl_get_window_info;
+		cio_api.setscaling=bitmap_setscaling;
+		cio_api.getscaling=bitmap_getscaling;
 		return(1);
 	}
 	return(0);
@@ -189,6 +193,8 @@ int try_x_init(int mode)
 		cio_api.copytext=x_copytext;
 		cio_api.getcliptext=x_getcliptext;
 		cio_api.get_window_info=x_get_window_info;
+		cio_api.setscaling=bitmap_setscaling;
+		cio_api.getscaling=bitmap_getscaling;
 		return(1);
 	}
 	return(0);
@@ -1321,3 +1327,18 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_getvideoflags(void)
 		return(cio_api.getvideoflags());
 	return(0);
 }
+
+/* Optional */
+CIOLIBEXPORT void CIOLIBCALL ciolib_setscaling(int new_value)
+{
+	if(cio_api.setscaling)
+		cio_api.setscaling(new_value);
+}
+
+/* Optional */
+CIOLIBEXPORT int CIOLIBCALL ciolib_getscaling(void)
+{
+	if(cio_api.getscaling)
+		return(cio_api.getscaling());
+	return(0);
+}
diff --git a/src/conio/ciolib.h b/src/conio/ciolib.h
index 22b287bda3a4d65039ea0e9d1d80c52a8215d7e7..f9ac3946df847617e47ffe2cdf45204e23717ee9 100644
--- a/src/conio/ciolib.h
+++ b/src/conio/ciolib.h
@@ -295,6 +295,8 @@ typedef struct {
 	void	(*setcustomcursor)	(int startline, int endline, int range, int blink, int visible);
 	void	(*setvideoflags)	(int flags);
 	int		(*getvideoflags)	(void);
+	void	(*setscaling)	(int new_value);
+	int		(*getscaling)	(void);
 	int		*ESCDELAY;
 } cioapi_t;
 
@@ -360,6 +362,8 @@ CIOLIBEXPORT void CIOLIBCALL ciolib_getcustomcursor(int *startline, int *endline
 CIOLIBEXPORT void CIOLIBCALL ciolib_setcustomcursor(int startline, int endline, int range, int blink, int visible);
 CIOLIBEXPORT void CIOLIBCALL ciolib_setvideoflags(int flags);
 CIOLIBEXPORT int CIOLIBCALL ciolib_getvideoflags(void);
+CIOLIBEXPORT void CIOLIBCALL ciolib_setscaling(int flags);
+CIOLIBEXPORT int CIOLIBCALL ciolib_getscaling(void);
 
 /* DoorWay specific stuff that's only applicable to ANSI mode. */
 CIOLIBEXPORT void CIOLIBCALL ansi_ciolib_setdoorway(int enable);
@@ -419,6 +423,8 @@ CIOLIBEXPORT void CIOLIBCALL ansi_ciolib_setdoorway(int enable);
 	#define setcustomcursor(a,b,c,d,e)	ciolib_setcustomcursor(a,b,c,d,e)
 	#define setvideoflags(a)		ciolib_setvideoflags(a)
 	#define getvideoflags()			ciolib_getvideoflags()
+	#define setscaling(a)			ciolib_setscaling(a)
+	#define getscaling()			ciolib_getscaling()
 #endif
 
 #ifdef WITH_SDL