diff --git a/src/v_video.c b/src/v_video.c
index 12588f9c2fc2bebda04d6292e137778dff504d63..49601ad78e5e85c176ba29937073a08591e11f84 100644
--- a/src/v_video.c
+++ b/src/v_video.c
@@ -539,7 +539,7 @@ void V_DrawStretchyFixedPatch(fixed_t x, fixed_t y, fixed_t pscale, fixed_t vsca
 	patchdrawfunc = standardpdraw;
 
 	v_translevel = NULL;
-	if (alphalevel)
+	if (alphalevel || blendmode)
 	{
 		if (alphalevel == 10)
 			alphalevel = hudminusalpha[st_translucency];
@@ -551,15 +551,13 @@ void V_DrawStretchyFixedPatch(fixed_t x, fixed_t y, fixed_t pscale, fixed_t vsca
 		if (alphalevel >= 10)
 			return; // invis
 
-		if (alphalevel)
-		{
-			if (blendmode)
-				v_translevel = R_GetBlendTable(blendmode+1, alphalevel);
-			else
-				v_translevel = R_GetTranslucencyTable(alphalevel);
+		if (blendmode)
+			v_translevel = R_GetBlendTable(blendmode+1, alphalevel);
+		else if (alphalevel)
+			v_translevel = R_GetTranslucencyTable(alphalevel);
 
+		if (v_translevel)
 			patchdrawfunc = translucentpdraw;
-		}
 	}
 
 	v_colormap = NULL;
@@ -833,7 +831,7 @@ void V_DrawCroppedPatch(fixed_t x, fixed_t y, fixed_t pscale, fixed_t vscale, IN
 	patchdrawfunc = standardpdraw;
 
 	v_translevel = NULL;
-	if (alphalevel)
+	if (alphalevel || blendmode)
 	{
 		if (alphalevel == 10)
 			alphalevel = hudminusalpha[st_translucency];
@@ -845,15 +843,13 @@ void V_DrawCroppedPatch(fixed_t x, fixed_t y, fixed_t pscale, fixed_t vscale, IN
 		if (alphalevel >= 10)
 			return; // invis
 
-		if (alphalevel)
-		{
-			if (blendmode)
-				v_translevel = R_GetBlendTable(blendmode+1, alphalevel);
-			else
-				v_translevel = R_GetTranslucencyTable(alphalevel);
+		if (blendmode)
+			v_translevel = R_GetBlendTable(blendmode+1, alphalevel);
+		else if (alphalevel)
+			v_translevel = R_GetTranslucencyTable(alphalevel);
 
+		if (v_translevel)
 			patchdrawfunc = translucentpdraw;
-		}
 	}
 
 	v_colormap = NULL;