diff --git a/src/f_finale.h b/src/f_finale.h
index ba4afec42f1ee2478e80f9afeddf927b17290fb8..d28ed0b01346a0e428089850744b77a87b0b141d 100644
--- a/src/f_finale.h
+++ b/src/f_finale.h
@@ -172,7 +172,7 @@ void F_WipeStartScreen(void);
 void F_WipeEndScreen(void);
 void F_RunWipe(UINT8 wipetype, boolean drawMenu);
 void F_WipeTicker(void);
-void F_WipeTitleCard(void);
+void F_WipeStageTitle(void);
 #define F_WipeColorFill(c) V_DrawFill(0, 0, BASEVIDWIDTH, BASEVIDHEIGHT, (wipecolorfill = c))
 tic_t F_GetWipeLength(UINT8 wipetype);
 boolean F_WipeExists(UINT8 wipetype);
diff --git a/src/f_wipe.c b/src/f_wipe.c
index 203d7c08d3da0ccb9930fca1d033ebb5bfbe6449..8e767932f9cc892d1757ed78c3427ad0cefada13 100644
--- a/src/f_wipe.c
+++ b/src/f_wipe.c
@@ -18,6 +18,7 @@
 
 #include "r_draw.h" // transtable
 #include "p_pspr.h" // tr_transxxx
+#include "p_local.h"
 #include "w_wad.h"
 #include "z_zone.h"
 
@@ -25,6 +26,7 @@
 #include "m_menu.h"
 #include "console.h"
 #include "d_main.h"
+#include "g_game.h"
 #include "m_misc.h" // movie mode
 
 #include "doomstat.h"
@@ -187,17 +189,27 @@ static fademask_t *F_GetFadeMask(UINT8 masknum, UINT8 scrnnum) {
 	return NULL;
 }
 
-void F_WipeTitleCard(void)
+/** Draw the stage title.
+  */
+void F_WipeStageTitle(void)
 {
 	if (wipestyle == WIPESTYLE_LEVEL
-		&& (!titlemapinaction)
-		&& (wipestyleflags & WSF_FADEIN)
-		&& *mapheaderinfo[gamemap-1]->lvlttl != '\0'
+	&& (!titlemapinaction)
+	&& (wipestyleflags & WSF_FADEIN)
+	&& *mapheaderinfo[gamemap-1]->lvlttl != '\0'
 #ifdef HAVE_BLUA
-		&& LUA_HudEnabled(hud_stagetitle)
+	&& LUA_HudEnabled(hud_stagetitle)
 #endif
-		)
+	)
+	{
+		stplyr = &players[consoleplayer];
 		ST_drawLevelTitle(TICRATE);
+		if (splitscreen)
+		{
+			stplyr = &players[secondarydisplayplayer];
+			ST_drawLevelTitle(TICRATE);
+		}
+	}
 }
 
 /**	Wipe ticker
@@ -344,7 +356,8 @@ static void F_DoWipe(fademask_t *fademask)
 		free(scrxpos);
 		free(scrypos);
 	}
-	F_WipeTitleCard();
+	if (wipestyle == WIPESTYLE_LEVEL)
+		F_WipeStageTitle();
 }
 #endif
 
@@ -460,7 +473,8 @@ void F_RunWipe(UINT8 wipetype, boolean drawMenu)
 #endif
 }
 
-// Works On My Machine seal of approval
+/** Run and display the fade with the level.
+  */
 void F_WipeTicker(void)
 {
 #ifndef NOWIPE
@@ -524,6 +538,8 @@ tic_t F_GetWipeLength(UINT8 wipetype)
 #endif
 }
 
+/** Does the specified wipe exist?
+  */
 boolean F_WipeExists(UINT8 wipetype)
 {
 #ifdef NOWIPE
diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c
index 4cba4cfada13212ddfbd291d78eae0c7b722047f..a6863f8d849445b30b45e8627c3ce7d3504bfe47 100644
--- a/src/hardware/hw_main.c
+++ b/src/hardware/hw_main.c
@@ -7090,7 +7090,7 @@ void HWR_DoLevelWipe(UINT8 wipenum, UINT8 scrnnum, UINT8 colfill)
 	HWR_GetFadeMask(wipelumpnum);
 
 	HWD.pfnDoScreenWipeLevel();
-	F_WipeTitleCard();
+	F_WipeStageTitle();
 #endif
 }