diff --git a/src/r_things.c b/src/r_things.c
index f8456fa11885c8ed0dc427b3fdf9c2c29dc4298b..385cbaaa5c4887b2e72e66f30f691a0dd4960f76 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -3194,9 +3194,11 @@ static boolean R_CheckSpriteVisible(vissprite_t *spr, INT32 x1, INT32 x2)
 	INT16 szt = spr->szt;
 
 	fixed_t texturemid, yscale, scalestep = spr->scalestep;
+	INT32 height;
 
 	if (scalestep)
 	{
+		height = spr->patch->height;
 		yscale = spr->scale;
 		scalestep = FixedMul(scalestep, spr->spriteyscale);
 
@@ -3210,8 +3212,10 @@ static boolean R_CheckSpriteVisible(vissprite_t *spr, INT32 x1, INT32 x2)
 	{
 		if (scalestep)
 		{
-			szt = (INT16)((centeryfrac - FixedMul(texturemid, yscale))>>FRACBITS);
-			sz = (INT16)((centeryfrac - FixedMul(texturemid, yscale))>>FRACBITS);
+			fixed_t top = centeryfrac - FixedMul(texturemid, yscale);
+			fixed_t bottom = top + (height * yscale);
+			szt = (INT16)(top >> FRACBITS);
+			sz = (INT16)(bottom >> FRACBITS);
 			yscale += scalestep;
 		}