diff --git a/src/m_menu.c b/src/m_menu.c
index 49e8211d0a66738de9d7be2296d4d9815ebb29f9..932d368daf4984fe7fc98b38401ff32b7114fc2b 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -8483,7 +8483,7 @@ static void M_DrawLoadGameData(void)
 				sprdef = &charbotskin->sprites[SPR2_SIGN];
 				if (!sprdef->numframes)
 					goto skipbot;
-				colormap = R_GetTranslationColormap(savegameinfo[savetodraw].botskin, charbotskin->prefcolor, 0);
+				colormap = R_GetTranslationColormap(savegameinfo[savetodraw].botskin-1, charbotskin->prefcolor, 0);
 				sprframe = &sprdef->spriteframes[0];
 				patch = W_CachePatchNum(sprframe->lumppat[0], PU_PATCH);
 
diff --git a/src/r_skins.c b/src/r_skins.c
index a4fe1982f72f1cf0a31fc4181719987c89c4f0f0..25904e95e3ff2c1c89e5fcd5c60c564efedaf84b 100644
--- a/src/r_skins.c
+++ b/src/r_skins.c
@@ -286,6 +286,11 @@ void SetPlayerSkinByNum(INT32 playernum, INT32 skinnum)
 			else if (playernum == secondarydisplayplayer)
 				CV_StealthSetValue(&cv_playercolor2, skin->prefcolor);
 			player->skincolor = newcolor = skin->prefcolor;
+			if (player->bot && botingame)
+			{
+				botskin = (UINT8)(skinnum + 1);
+				botcolor = skin->prefcolor;
+			}
 		}
 
 		if (player->followmobj)