diff --git a/src/p_mobj.c b/src/p_mobj.c
index b7559437c76dabeccb71983f49627137ab9daff9..8256d73756b4367d8215c928d225468359e31dc4 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -11582,7 +11582,6 @@ void P_SpawnPlayer(INT32 playernum)
 				// Spawn as a spectator,
 				// yes even in splitscreen mode
 				p->spectator = true;
-				p->skincolor = teams[newteam].color;
 
 				// but immediately send a team change packet.
 				NetPacket.packet.playernum = playernum;
diff --git a/src/p_user.c b/src/p_user.c
index 9ded986167f927b4609d387c52b9f4ed76154a51..d0b983a84e4a45b1cb3b644c8ee700b05184c960 100644
--- a/src/p_user.c
+++ b/src/p_user.c
@@ -13108,7 +13108,11 @@ boolean P_PlayerHasTeamFlag(player_t *player, UINT8 team)
 UINT16 P_GetPlayerColor(player_t *player)
 {
 	if (G_GametypeHasTeams() && player->ctfteam)
-		return G_GetTeamColor(player->ctfteam);
+	{
+		UINT16 skincolor = G_GetTeamColor(player->ctfteam);
+		if (skincolor != SKINCOLOR_NONE)
+			return skincolor;
+	}
 
 	return player->skincolor;
 }