diff --git a/src/conio/bitmap_con.c b/src/conio/bitmap_con.c
index 4d868851f9adf97f0cd40007c382ee6b2ca80e25..39b8c21923f2e01041e3529a75f4f7961b1eb00b 100644
--- a/src/conio/bitmap_con.c
+++ b/src/conio/bitmap_con.c
@@ -1441,18 +1441,12 @@ bitmap_movetext_screen(int x, int y, int tox, int toy, int direction, int height
 		if (screena.toprow < 0)
 			screena.toprow += screena.screenheight;
 
-		/*
-		 * Set up to move bits that were *not* moved back to
-		 * where they should have stayed.
-		 */
-		if (direction == -1)
-			direction = 1;
-		else
-			direction = -1;
 		height = vstat.rows - height;
-		int moved = y - toy;
 		toy = vstat.rows - (height - 1);
-		y = toy - moved;
+		// Fill the bits with impossible data so they're redrawn
+		memset(&bitmap_drawn[(toy - 1) * vstat.cols], 0x04, sizeof(*bitmap_drawn) * height * vstat.cols);
+		pthread_mutex_unlock(&screenlock);
+		return;
 	}
 
 	int maxpos = screena.screenwidth * screena.screenheight;