diff --git a/src/v_video.c b/src/v_video.c
index e9237563072df7f8917dd59b446dee57cdacae97..0b2edde33768efba2fe1934465ce53fe0fd8ea14 100644
--- a/src/v_video.c
+++ b/src/v_video.c
@@ -1902,14 +1902,15 @@ void V_DrawPromptBack(INT32 boxheight, INT32 color)
 {
 	UINT8 *deststop, *buf;
 
-	boxheight = ((boxheight * 4) + (boxheight/2)*5);
-
 	if (color >= 256 && color < 512)
 	{
+		boxheight = ((boxheight * 4) + (boxheight/2)*5);
 		V_DrawFill((BASEVIDWIDTH-(vid.width/vid.dupx))/2, BASEVIDHEIGHT-boxheight, (vid.width/vid.dupx),boxheight, (color-256)|V_SNAPTOBOTTOM);
 		return;
 	}
 
+	boxheight *= vid.dupy;
+
 	if (color == INT32_MAX)
 		color = cons_backcolor.value;
 
@@ -1951,7 +1952,7 @@ void V_DrawPromptBack(INT32 boxheight, INT32 color)
 	// heavily simplified -- we don't need to know x or y position,
 	// just the start and stop positions
 	deststop = screens[0] + vid.rowbytes * vid.height;
-	buf = deststop - vid.rowbytes * boxheight * vid.dupy; // 4 lines of space plus gaps between and some leeway
+	buf = deststop - vid.rowbytes * ((boxheight * 4) + (boxheight/2)*5); // 4 lines of space plus gaps between and some leeway
 	for (; buf < deststop; ++buf)
 		*buf = promptbgmap[*buf];
 }