diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c
index 02e3818c5e844b1ca66684a668ce185230f1fdc2..245c70177e876dda5cff2789ab9a0c719d573fc2 100644
--- a/src/hardware/hw_main.c
+++ b/src/hardware/hw_main.c
@@ -764,9 +764,6 @@ static void HWR_RenderViewpoint(player_t *player, boolean is_skybox, gl_portal_t
 	// Reset the shader state.
 	HWR_SetShaderState();
 
-	if (HWR_IsWireframeMode())
-		HWD.pfnSetSpecialState(HWD_SET_WIREFRAME, 1);
-
 	ps_numbspcalls.value.i = 0;
 	ps_numpolyobjects.value.i = 0;
 	PS_START_TIMING(ps_bsptime);
@@ -887,9 +884,6 @@ static void HWR_RenderViewpoint(player_t *player, boolean is_skybox, gl_portal_t
 	// hack for debugportal, see earlier comment
 	if (gl_debugportal && !gl_portal_level)
 		HWR_SetStencilState(HWD_STENCIL_INACTIVE);
-
-	if (HWR_IsWireframeMode())
-		HWD.pfnSetSpecialState(HWD_SET_WIREFRAME, 0);
 }
 
 void HWR_RenderPlayerView(INT32 viewnumber, player_t *player)
@@ -942,6 +936,9 @@ void HWR_RenderPlayerView(INT32 viewnumber, player_t *player)
 	if (cv_glshaders.value)
 		HWD.pfnSetShaderInfo(HWD_SHADERINFO_LEVELTIME, (INT32)leveltime);
 
+	if (HWR_IsWireframeMode())
+		HWD.pfnSetSpecialState(HWD_SET_WIREFRAME, 1);
+
 	PS_START_TIMING(ps_hw_skyboxtime); // TODO put these somewhere
 	PS_STOP_TIMING(ps_hw_skyboxtime);