diff --git a/src/hardware/hw_md2.c b/src/hardware/hw_md2.c
index 15f1eb488b159b855331c3cb42fb1abb5466fa3d..077a90f38a93e0fc449148bdfc9cf443aa18315f 100644
--- a/src/hardware/hw_md2.c
+++ b/src/hardware/hw_md2.c
@@ -1563,31 +1563,24 @@ boolean HWR_DrawModel(gl_vissprite_t *spr)
 
 			if (spr2frames)
 			{
-				boolean is_super = P_IsStateSprite2Super(&states[spr->mobj->state->nextstate]);
+				UINT16 next_spr2 = P_GetStateSprite2(&states[spr->mobj->state->nextstate]);
 
 				// Add/Remove SPR2F_SUPER based on certain conditions
 				if (spr->mobj->player)
 				{
 					if (spr->mobj->player->charflags & SF_NOSUPERSPRITES)
-						is_super = false;
+						next_spr2 &= ~SPR2F_SUPER;
 					else if (spr->mobj->player->powers[pw_super])
-						is_super = true;
+						next_spr2 |= SPR2F_SUPER;
 				}
 
-				if (is_super)
+				if (next_spr2 & SPR2F_SUPER)
 				{
 					if (spr->mobj->eflags & MFE_FORCENOSUPER)
-						is_super = false;
+						next_spr2 &= ~SPR2F_SUPER;
 				}
 				else if (spr->mobj->eflags & MFE_FORCESUPER)
-					is_super = true;
-
-				UINT16 next_spr2 = P_GetStateSprite2(&states[spr->mobj->state->nextstate]);
-
-				if (is_super)
 					next_spr2 |= SPR2F_SUPER;
-				else
-					next_spr2 &= ~SPR2F_SUPER;
 
 				if (HWR_CanInterpolateSprite2(spr2frames)
 					&& (spr->mobj->frame & FF_ANIMATE