diff --git a/src/r_things.c b/src/r_things.c
index 97c1b5d7b22ee5a6a18cc70f6f9f7fcabe0bbfef..970c59b3d02c60de0244e78c64c9294bd23e0347 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -1152,7 +1152,7 @@ static void R_ProjectSprite(mobj_t *thing)
 
 	// aspect ratio stuff
 	xscale = FixedDiv(projection, tz);
-	sortscale = FixedDiv(projectiony, tz);
+	yscale = FixedDiv(projectiony, tz);
 
 	// decide which patch to use for sprite relative to player
 #ifdef RANGECHECK
@@ -1292,11 +1292,13 @@ static void R_ProjectSprite(mobj_t *thing)
 			range = 1;
 
 		scalestep = (yscale2 - yscale)/range;
+
+		sortscale = max(yscale, yscale2);
 	}
 	else
 	{
-		yscale = sortscale;
 		scalestep = 0;
+		sortscale = yscale;
 	}
 
 	xscale = FixedMul(xscale, ang_scale);