diff --git a/src/r_main.c b/src/r_main.c
index 63641a25aa8a012171989bcedf928ab1be52148f..a7592b55417bbb6568f728e554e66b5c82f35bb9 100644
--- a/src/r_main.c
+++ b/src/r_main.c
@@ -1155,7 +1155,7 @@ void R_RenderPlayerView(player_t *player)
 void R_InitHardwareMode(void)
 {
 	HWR_AddCommands();
-	if (gamestate == GS_LEVEL || gamestate == GS_TITLESCREEN)
+	if (gamestate == GS_LEVEL || (gamestate == GS_TITLESCREEN && titlemapinaction))
 	{
 		HWR_SetupLevel();
 		HWR_PrepLevelCache(numtextures);