diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c
index c5633302ad6b41f1d2397a94c58dc62ba5046d83..7c143edd516836d98ef7bafd838b9c099611ed97 100644
--- a/src/conio/ciolib.c
+++ b/src/conio/ciolib.c
@@ -729,26 +729,30 @@ int ciolib_cputs(char *str)
 void ciolib_textbackground(int colour)
 {
 	unsigned char attr;
+	unsigned char col;
 
 	CIOLIB_INIT();
 	
 	ciolib_gettextinfo(&cio_textinfo);
 	attr=cio_textinfo.attribute;
 	attr&=143;
-	attr|=(colour<<4);
+	col=(colour & 0x07);
+	attr|=(col<<4);
 	ciolib_textattr(attr);
 }
 
 void ciolib_textcolor(int colour)
 {
 	unsigned char attr;
+	unsigned char col;
 
 	CIOLIB_INIT();
 	
 	ciolib_gettextinfo(&cio_textinfo);
 	attr=cio_textinfo.attribute;
 	attr&=240;
-	attr|=(colour*0x0f);
+	col=colour&0x0f;
+	attr|=col;
 	ciolib_textattr(attr);
 }