diff --git a/src/f_finale.c b/src/f_finale.c
index bc904d8f29b88a801dc2d921328c1e70cb41881f..e37eab764f111e03a1c2746b89ac982782567421 100644
--- a/src/f_finale.c
+++ b/src/f_finale.c
@@ -2693,8 +2693,18 @@ static void F_FigureActiveTtScale(void)
 	SINT8 newttscale = max(1, min(6, vid.dupx));
 	SINT8 oldttscale = activettscale;
 
-	if (newttscale == testttscale)
-		return;
+	if (needpatchrecache)
+		ttloaded[0] = ttloaded[1] = ttloaded[2] = ttloaded[3] = ttloaded[4] = ttloaded[5] = 0;
+	else
+	{
+		if (newttscale == testttscale)
+			return;
+
+		// We have a new ttscale, so load gfx
+		if(oldttscale > 0)
+			F_UnloadAlacroixGraphics(oldttscale);
+	}
+
 	testttscale = newttscale;
 
 	// If ttscale is unavailable: look for lower scales, then higher scales.
@@ -2712,10 +2722,6 @@ static void F_FigureActiveTtScale(void)
 
 	activettscale = (newttscale >= 1 && newttscale <= 6) ? newttscale : 0;
 
-	// We have a new ttscale, so load gfx
-	if(oldttscale > 0)
-		F_UnloadAlacroixGraphics(oldttscale);
-
 	if(activettscale > 0)
 		F_LoadAlacroixGraphics(activettscale);
 }
@@ -2757,12 +2763,6 @@ void F_TitleScreenDrawer(void)
 		return;
 #endif
 
-	if (needpatchrecache && (curttmode == TTMODE_ALACROIX))
-	{
-		ttloaded[0] = ttloaded[1] = ttloaded[2] = ttloaded[3] = ttloaded[4] = ttloaded[5] = 0;
-		F_LoadAlacroixGraphics(activettscale);
-	}
-
 	switch(curttmode)
 	{
 		case TTMODE_OLD: