diff --git a/src/g_game.c b/src/g_game.c
index 38289bcb234f9ed46021a3c803619ff52041d410..891a17d1321b640d53eb97b01d093cb7538a1f95 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -129,6 +129,7 @@ INT16 bootmap; //bootmap for loading a map on startup
 
 INT16 tutorialmap = 0; // map to load for tutorial
 boolean tutorialmode = false; // are we in a tutorial right now?
+boolean tutorialgcs = gcs_custom; // which control scheme is loaded?
 
 boolean looptitle = false;
 
diff --git a/src/m_misc.c b/src/m_misc.c
index cc9ae2999c5ab86c08ce5c5f7088d5ef3e7898bc..7bc2d75cb3ba6cfb04668d6c4ac9f6726eef1fa6 100644
--- a/src/m_misc.c
+++ b/src/m_misc.c
@@ -542,7 +542,7 @@ void M_SaveConfig(const char *filename)
 	CV_SaveVariables(f);
 	if (!dedicated)
 	{
-		if (tutorialmode)
+		if (tutorialmode && tutorialgcs)
 			G_SaveKeySetting(f, gamecontroldefault[gcs_custom], gamecontrolbis); // using gcs_custom as temp storage
 		else
 			G_SaveKeySetting(f, gamecontrol, gamecontrolbis);