diff --git a/src/deh_soc.c b/src/deh_soc.c
index c0e646f608851b0c668bb979139885965394a27f..a2be99fa0ed086fc680e48824ba0efd7d63c0f96 100644
--- a/src/deh_soc.c
+++ b/src/deh_soc.c
@@ -3549,6 +3549,8 @@ void readmaincfg(MYFILE *f)
 	char *tmp;
 	INT32 value;
 
+	bootmap = 0; // reset bootmap so we don't warp to the wrong map if another maincfg had set this before
+
 	do
 	{
 		if (myfgets(s, MAXLINELEN, f))
diff --git a/src/dehacked.c b/src/dehacked.c
index 2050a117f67128dae4e40b992e5a49f1538457d7..8743a482eda7580ae96e7182c8c173a9beda7aba 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -587,7 +587,12 @@ static void DEH_LoadDehackedFile(MYFILE *f, boolean mainfile)
 
 	if (gamestate == GS_TITLESCREEN)
 	{
-		if (introchanged)
+		if (bootmap)
+		{
+			menuactive = false;
+			D_MapChange(bootmap, gametype, ultimatemode, true, 0, false, false);
+		}
+		else if (introchanged)
 		{
 			menuactive = false;
 			I_UpdateMouseGrab();