diff --git a/src/r_segs.c b/src/r_segs.c
index 3059860cfc0983afc1ea3abd65765f8c815a7c33..502ff3304dab17ec4f54283608ee33fb74145b60 100644
--- a/src/r_segs.c
+++ b/src/r_segs.c
@@ -708,7 +708,10 @@ static void R_DrawRepeatMaskedColumn(column_t *col)
 {
 	while (sprtopscreen < sprbotscreen) {
 		R_DrawMaskedColumn(col);
-		sprtopscreen += dc_texheight*spryscale;
+		if ((INT64)sprtopscreen + dc_texheight*spryscale > (INT64)INT32_MAX) // prevent overflow
+			sprtopscreen = INT32_MAX;
+		else
+			sprtopscreen += dc_texheight*spryscale;
 	}
 }