diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c
index 05fa5f18b7478c66edb52618da0ed66f3c16561f..6fae59e9e3751f179feb5db5024e753f5923127f 100644
--- a/src/conio/sdl_con.c
+++ b/src/conio/sdl_con.c
@@ -955,17 +955,25 @@ int sdl_draw_one_char(unsigned short sch, unsigned int x, unsigned int y)
 	SDL_Rect	src;
 	SDL_Rect	dst;
 	unsigned char	ch;
+	static int	lastfg=-1;
+	static int	lastbg=-1;
 
 	ch=(sch >> 8) & 0x0f;
-	co.r=dac_default256[vstat.palette[ch]].red;
-	co.g=dac_default256[vstat.palette[ch]].green;
-	co.b=dac_default256[vstat.palette[ch]].blue;
-	SDL_SetColors(sdl_font, &co, 1, 1);
+	if(lastfg!=ch) {
+		co.r=dac_default256[vstat.palette[ch]].red;
+		co.g=dac_default256[vstat.palette[ch]].green;
+		co.b=dac_default256[vstat.palette[ch]].blue;
+		SDL_SetColors(sdl_font, &co, 1, 1);
+		lastfg=ch;
+	}
 	ch=(sch >> 12) & 0x07;
-	co.r=dac_default256[vstat.palette[ch]].red;
-	co.g=dac_default256[vstat.palette[ch]].green;
-	co.b=dac_default256[vstat.palette[ch]].blue;
-	SDL_SetColors(sdl_font, &co, 0, 1);
+	if(lastbg!=ch) {
+		co.r=dac_default256[vstat.palette[ch]].red;
+		co.g=dac_default256[vstat.palette[ch]].green;
+		co.b=dac_default256[vstat.palette[ch]].blue;
+		SDL_SetColors(sdl_font, &co, 0, 1);
+		lastbg=ch;
+	}
 	dst.x=x*vstat.charwidth*vstat.scaling;
 	dst.y=y*vstat.charheight*vstat.scaling;
 	dst.w=vstat.charwidth*vstat.scaling;