diff --git a/src/console.c b/src/console.c
index e77c400b3fa98552f0c405b8c3acc96ed65c92cc..fe447b10ab7543dc5bdce8939d314c7c85a48531 100644
--- a/src/console.c
+++ b/src/console.c
@@ -248,11 +248,11 @@ void CON_ReSetupBackColormap(UINT16 num)
 	{
 		j = pal[i] + pal[i+1] + pal[i+2];
 		cwhitemap[k] = (UINT8)(15 - (j>>6));
-		corangemap[k] = (UINT8)(95 - (j>>6));
-		cbluemap[k] = (UINT8)(239 - (j>>6));
-		cgreenmap[k] = (UINT8)(175 - (j>>6));
+		corangemap[k] = (UINT8)(63 - (j>>6));
+		cbluemap[k] = (UINT8)(159 - (j>>6));
+		cgreenmap[k] = (UINT8)(111 - (j>>6));
 		cgraymap[k] = (UINT8)(31 - (j>>6));
-		credmap[k] = (UINT8)(143 - (j>>6));
+		credmap[k] = (UINT8)(47 - (j>>6));
 	}
 }
 
@@ -283,11 +283,11 @@ static void CON_SetupBackColormap(void)
 	{
 		j = pal[i] + pal[i+1] + pal[i+2];
 		cwhitemap[k] = (UINT8)(15 - (j>>6));
-		corangemap[k] = (UINT8)(95 - (j>>6));
-		cbluemap[k] = (UINT8)(239 - (j>>6));
-		cgreenmap[k] = (UINT8)(175 - (j>>6));
+		corangemap[k] = (UINT8)(63 - (j>>6));
+		cbluemap[k] = (UINT8)(159 - (j>>6));
+		cgreenmap[k] = (UINT8)(111 - (j>>6));
 		cgraymap[k] = (UINT8)(31 - (j>>6));
-		credmap[k] = (UINT8)(143 - (j>>6));
+		credmap[k] = (UINT8)(47 - (j>>6));
 	}
 
 	// setup the other colormaps, for console text
@@ -306,20 +306,20 @@ static void CON_SetupBackColormap(void)
 		orangemap[i] = (UINT8)i;
 	}
 
-	yellowmap[3] = (UINT8)103;
-	yellowmap[9] = (UINT8)115;
-	purplemap[3] = (UINT8)195;
-	purplemap[9] = (UINT8)198;
-	lgreenmap[3] = (UINT8)162;
-	lgreenmap[9] = (UINT8)170;
-	bluemap[3]   = (UINT8)228;
-	bluemap[9]   = (UINT8)238;
+	yellowmap[3] = (UINT8)73;
+	yellowmap[9] = (UINT8)66;
+	purplemap[3] = (UINT8)184;
+	purplemap[9] = (UINT8)186;
+	lgreenmap[3] = (UINT8)102;
+	lgreenmap[9] = (UINT8)106;
+	bluemap[3]   = (UINT8)147;
+	bluemap[9]   = (UINT8)158;
 	graymap[3]   = (UINT8)10;
 	graymap[9]   = (UINT8)15;
-	redmap[3]    = (UINT8)124;
-	redmap[9]    = (UINT8)127;
-	orangemap[3] = (UINT8)85;
-	orangemap[9] = (UINT8)90;
+	redmap[3]    = (UINT8)210;
+	redmap[9]    = (UINT8)32;
+	orangemap[3] = (UINT8)52;
+	orangemap[9] = (UINT8)57;
 }
 
 // Setup the console text buffer
@@ -1472,3 +1472,4 @@ void CON_Drawer(void)
 	else if (gamestate == GS_LEVEL || gamestate == GS_INTERMISSION || gamestate == GS_CUTSCENE || gamestate == GS_CREDITS)
 		CON_DrawHudlines();
 }
+
diff --git a/src/d_clisrv.c b/src/d_clisrv.c
index c0179ca1be99cff5fb94b2a15b73a81269c02719..31738e9b21f7118ef98f05096539de967b80a4fc 100644
--- a/src/d_clisrv.c
+++ b/src/d_clisrv.c
@@ -1101,7 +1101,7 @@ static inline void CL_DrawConnectionStatus(void)
 	if (cl_mode != cl_downloadfiles)
 	{
 		INT32 i, animtime = ((ccstime / 4) & 15) + 16;
-		UINT8 palstart = (cl_mode == cl_searching) ? 128 : 160;
+		UINT8 palstart = (cl_mode == cl_searching) ? 32 : 96;
 		// 15 pal entries total.
 		const char *cltext;
 
@@ -1139,8 +1139,8 @@ static inline void CL_DrawConnectionStatus(void)
 		dldlength = (INT32)((fileneeded[lastfilenum].currentsize/(double)fileneeded[lastfilenum].totalsize) * 256);
 		if (dldlength > 256)
 			dldlength = 256;
-		V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-24, 256, 8, 175);
-		V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-24, dldlength, 8, 160);
+		V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-24, 256, 8, 111);
+		V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-24, dldlength, 8, 96);
 
 		memset(tempname, 0, sizeof(tempname));
 		nameonly(strncpy(tempname, fileneeded[lastfilenum].filename, 31));
diff --git a/src/d_main.c b/src/d_main.c
index 3918d8118c0c1cfd242c70b7f04148b26612f8c8..c5f0d0b396029bb4c18b8e46a2488906abc51c21 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -1129,10 +1129,10 @@ void D_SRB2Main(void)
 #ifndef DEVELOP // md5s last updated 12/14/14
 
 	// Check MD5s of autoloaded files
-	W_VerifyFileMD5(0, ASSET_HASH_SRB2_SRB); // srb2.srb/srb2.wad
-	W_VerifyFileMD5(1, ASSET_HASH_ZONES_DTA); // zones.dta
-	W_VerifyFileMD5(2, ASSET_HASH_PLAYER_DTA); // player.dta
-	W_VerifyFileMD5(3, ASSET_HASH_RINGS_DTA); // rings.dta
+	//W_VerifyFileMD5(0, ASSET_HASH_SRB2_SRB); // srb2.srb/srb2.wad
+	//W_VerifyFileMD5(1, ASSET_HASH_ZONES_DTA); // zones.dta
+	//W_VerifyFileMD5(2, ASSET_HASH_PLAYER_DTA); // player.dta
+	//W_VerifyFileMD5(3, ASSET_HASH_RINGS_DTA); // rings.dta
 	//W_VerifyFileMD5(4, "0c66790502e648bfce90fdc5bb15722e"); // patch.dta
 	// don't check music.dta because people like to modify it, and it doesn't matter if they do
 	// ...except it does if they slip maps in there, and that's what W_VerifyNMUSlumps is for.
diff --git a/src/dehacked.c b/src/dehacked.c
index 0aa577e3d4dc74e9f2a00d1616c3d38fcaf54f60..f12ba266b57ceb8b2c11464d0a32ba86d1c93d05 100644
--- a/src/dehacked.c
+++ b/src/dehacked.c
@@ -7320,27 +7320,31 @@ static const char *COLOR_ENUMS[] = {
 	"SILVER",   	// SKINCOLOR_SILVER
 	"GREY",	    	// SKINCOLOR_GREY
 	"BLACK",    	// SKINCOLOR_BLACK
-	"CYAN",     	// SKINCOLOR_CYAN
-	"TEAL",     	// SKINCOLOR_TEAL
-	"STEELBLUE",	// SKINCOLOR_STEELBLUE
-	"BLUE",     	// SKINCOLOR_BLUE
-	"PEACH",    	// SKINCOLOR_PEACH
-	"TAN",      	// SKINCOLOR_TAN
-	"PINK",     	// SKINCOLOR_PINK
-	"LAVENDER", 	// SKINCOLOR_LAVENDER
-	"PURPLE",   	// SKINCOLOR_PURPLE
-	"ORANGE",   	// SKINCOLOR_ORANGE
-	"ROSEWOOD", 	// SKINCOLOR_ROSEWOOD
 	"BEIGE",    	// SKINCOLOR_BEIGE
+	"PEACH",    	// SKINCOLOR_PEACH
 	"BROWN",    	// SKINCOLOR_BROWN
 	"RED",      	// SKINCOLOR_RED
-	"DARKRED",  	// SKINCOLOR_DARKRED
-	"NEONGREEN",	// SKINCOLOR_NEONGREEN
-	"GREEN",    	// SKINCOLOR_GREEN
-	"ZIM",      	// SKINCOLOR_ZIM
-	"OLIVE",    	// SKINCOLOR_OLIVE
+	"CRIMSON",     	// SKINCOLOR_CRIMSON
+	"ORANGE",   	// SKINCOLOR_ORANGE
+	"RUST",     	// SKINCOLOR_RUST
+	"GOLD",      	// SKINCOLOR_GOLD
 	"YELLOW",   	// SKINCOLOR_YELLOW
-	"GOLD",     	// SKINCOLOR_GOLD
+	"TAN",      	// SKINCOLOR_TAN
+	"MOSS",      	// SKINCOLOR_MOSS
+	"PERIDOT",    	// SKINCOLOR_PERIDOT
+	"GREEN",    	// SKINCOLOR_GREEN
+	"EMERALD",  	// SKINCOLOR_EMERALD
+	"AQUA",     	// SKINCOLOR_AQUA
+	"TEAL",     	// SKINCOLOR_TEAL
+	"CYAN",     	// SKINCOLOR_CYAN
+	"BLUE",     	// SKINCOLOR_BLUE
+	"AZURE",    	// SKINCOLOR_AZURE
+	"PASTEL",		// SKINCOLOR_PASTEL
+	"PURPLE",   	// SKINCOLOR_PURPLE
+	"LAVENDER", 	// SKINCOLOR_LAVENDER
+	"MAGENTA",   	// SKINCOLOR_MAGENTA
+	"PINK",     	// SKINCOLOR_PINK
+	"ROSY",     	// SKINCOLOR_ROSY
 	// Super special awesome Super flashing colors!
 	"SUPER1",   	// SKINCOLOR_SUPER1
 	"SUPER2",   	// SKINCOLOR_SUPER2,
@@ -8821,3 +8825,4 @@ void LUA_SetActionByName(void *state, const char *actiontocompare)
 }
 
 #endif // HAVE_BLUA
+
diff --git a/src/doomdef.h b/src/doomdef.h
index fe23787a867fe45621bedf7d9260e02206a5e9b2..46dcd080875925deaa65cf89f5b44cb2205a0b64 100644
--- a/src/doomdef.h
+++ b/src/doomdef.h
@@ -232,27 +232,31 @@ typedef enum
 	SKINCOLOR_SILVER,
 	SKINCOLOR_GREY,
 	SKINCOLOR_BLACK,
-	SKINCOLOR_CYAN,
-	SKINCOLOR_TEAL,
-	SKINCOLOR_STEELBLUE,
-	SKINCOLOR_BLUE,
-	SKINCOLOR_PEACH,
-	SKINCOLOR_TAN,
-	SKINCOLOR_PINK,
-	SKINCOLOR_LAVENDER,
-	SKINCOLOR_PURPLE,
-	SKINCOLOR_ORANGE,
-	SKINCOLOR_ROSEWOOD,
 	SKINCOLOR_BEIGE,
+	SKINCOLOR_PEACH,
 	SKINCOLOR_BROWN,
 	SKINCOLOR_RED,
-	SKINCOLOR_DARKRED,
-	SKINCOLOR_NEONGREEN,
-	SKINCOLOR_GREEN,
-	SKINCOLOR_ZIM,
-	SKINCOLOR_OLIVE,
-	SKINCOLOR_YELLOW,
+	SKINCOLOR_CRIMSON,
+	SKINCOLOR_ORANGE,
+	SKINCOLOR_RUST,
 	SKINCOLOR_GOLD,
+	SKINCOLOR_YELLOW,
+	SKINCOLOR_TAN,
+	SKINCOLOR_MOSS,
+	SKINCOLOR_PERIDOT,
+	SKINCOLOR_GREEN,
+	SKINCOLOR_EMERALD,
+	SKINCOLOR_AQUA,
+	SKINCOLOR_TEAL,
+	SKINCOLOR_CYAN,
+	SKINCOLOR_BLUE,
+	SKINCOLOR_AZURE,
+	SKINCOLOR_PASTEL,
+	SKINCOLOR_PURPLE,
+	SKINCOLOR_LAVENDER,
+	SKINCOLOR_MAGENTA,
+	SKINCOLOR_PINK,
+	SKINCOLOR_ROSY,
 
 	// Careful! MAXSKINCOLORS cannot be greater than 0x20!
 	MAXSKINCOLORS,
@@ -500,3 +504,4 @@ extern const char *compdate, *comptime, *comprevision;
 //#define REDSANALOG
 
 #endif // __DOOMDEF__
+
diff --git a/src/g_game.c b/src/g_game.c
index 643ec8c93684ee6946f1b80c7d2760703abfa480..0f29d6a41a0ae78623798049c3abb57366215ce1 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -123,7 +123,7 @@ boolean useNightsSS = false;
 UINT8 skincolor_redteam = SKINCOLOR_RED;
 UINT8 skincolor_blueteam = SKINCOLOR_BLUE;
 UINT8 skincolor_redring = SKINCOLOR_RED;
-UINT8 skincolor_bluering = SKINCOLOR_STEELBLUE;
+UINT8 skincolor_bluering = SKINCOLOR_AZURE;
 
 tic_t countdowntimer = 0;
 boolean countdowntimeup = false;
diff --git a/src/hardware/hw_defs.h b/src/hardware/hw_defs.h
index 70d776d9e962c219d3449bdd3db262e6017962db..5a39fead179b76e2a0bf6ec6c13fa34e5f839e14 100644
--- a/src/hardware/hw_defs.h
+++ b/src/hardware/hw_defs.h
@@ -46,8 +46,8 @@ typedef unsigned char   FBOOLEAN;
 #define HWR_PATCHES_CHROMAKEY_COLORINDEX   0
 #define HWR_CHROMAKEY_EQUIVALENTCOLORINDEX 1
 #else
-#define HWR_PATCHES_CHROMAKEY_COLORINDEX   247
-#define HWR_CHROMAKEY_EQUIVALENTCOLORINDEX 220
+#define HWR_PATCHES_CHROMAKEY_COLORINDEX   255
+#define HWR_CHROMAKEY_EQUIVALENTCOLORINDEX 130
 #endif
 
 // the chroma key color shows on border sprites, set it to black
@@ -229,3 +229,4 @@ enum hwdfiltermode
 
 
 #endif //_HWR_DEFS_
+
diff --git a/src/m_cond.c b/src/m_cond.c
index 17f7551209b1dcaa4d58bc6e4e27e357c8087e2a..7ef192f7b8774cca8c22c1cf40261fcda72de1ab 100644
--- a/src/m_cond.c
+++ b/src/m_cond.c
@@ -49,7 +49,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"Streams come to an end\n"
 		"where they can no longer fall.\n"
 		"But if you went up...", 0},
-	{0,  -336,  2064,   195, 1, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0,  -336,  2064,   195, 1, 'E', SKINCOLOR_EMERALD, 0,
 		"This one's in plain sight.\n"
 		"Why haven't you claimed it?\n"
 		"Surely you saw it.", 0},
@@ -77,7 +77,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"Near the level's end,\n"
 		"another bridge spans a lake.\n"
 		"What could be under...?", 0},
-	{0,  -170,   491,  3821, 2, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0,  -170,   491,  3821, 2, 'E', SKINCOLOR_EMERALD, 0,
 		"An ivied tunnel\n"
 		"has a corner that's sunlit.\n"
 		"Go reach for the sky!", 0},
@@ -110,7 +110,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"Spinning through small gaps\n"
 		"can slip you into a cave.\n"
 		"In that cave's first stretch...", 0},
-	{0,  2848, -9088,   488, 4, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0,  2848, -9088,   488, 4, 'E', SKINCOLOR_EMERALD, 0,
 		"The slime lake is deep,\n"
 		"but reaching the floor takes height.\n"
 		"Scream \"Geronimo!\"...", 0},
@@ -138,7 +138,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"There is a hallway\n"
 		"that a button floods with slime.\n"
 		"Go through it again!", 0},
-	{0, -2468,-12128,  1312, 5, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0, -2468,-12128,  1312, 5, 'E', SKINCOLOR_EMERALD, 0,
 		"Jumping on turtles\n"
 		"will send you springing skyward.\n"
 		"Now, do that six times...", 0},
@@ -171,7 +171,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"A caved-in hallway?\n"
 		"The floor falls; the path goes down.\n"
 		"But those rocks looked weak...", 0},
-	{0, 12576, 16096,  -992, 7, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0, 12576, 16096,  -992, 7, 'E', SKINCOLOR_EMERALD, 0,
 		"The end is quite dry.\n"
 		"Some rocks dam the water in.\n"
 		"Knuckles can fix that...", 0},
@@ -199,7 +199,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"In the current maze\n"
 		"hides a dark room of columns.\n"
 		"Find it, then look up.", 0},
-	{0,  3104, 16192,  2408, 8, 'E', SKINCOLOR_NEONGREEN,  0,
+	{0,  3104, 16192,  2408, 8, 'E', SKINCOLOR_EMERALD,  0,
 		"That same dragon's eye\n"
 		"hides another secret room.\n"
 		"There, solve its riddle.", 0},
@@ -232,7 +232,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"The final approach!\n"
 		"A tower holds the emblem\n"
 		"near a ring arrow.", 0},
-	{0,  9472, -5890,   710, 10, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0,  9472, -5890,   710, 10, 'E', SKINCOLOR_EMERALD, 0,
 		"The right starting path\n"
 		"hides this near a canopy,\n"
 		"high, where two trees meet.", 0},
@@ -260,7 +260,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"Some of these bookshelves\n"
 		"are not flush against the walls.\n"
 		"Wonder why that is?", 0},
-	{0, 12708,-13536,  4768, 11, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0, 12708,-13536,  4768, 11, 'E', SKINCOLOR_EMERALD, 0,
 		"The ending's towers\n"
 		"are hiding a small alcove.\n"
 		"Check around outside.", 0},
@@ -293,7 +293,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"Not far from the start,\n"
 		"if you climb toward the sky,\n"
 		"the cliffs hide something.", 0},
-	{0, 12504,  6848,  3424, 13, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0, 12504,  6848,  3424, 13, 'E', SKINCOLOR_EMERALD, 0,
 		"Right by the exit,\n"
 		"an emblem lies on a cliff.\n"
 		"Ride ropes to reach it.", 0},
@@ -321,7 +321,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"Where once a bridge stood,\n"
 		"now magma falls from above.\n"
 		"The bridge dropped something...", 0},
-	{0,  8287,-11043,  1328, 16, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0,  8287,-11043,  1328, 16, 'E', SKINCOLOR_EMERALD, 0,
 		"A lake of magma\n"
 		"ebbs and flows unendingly.\n"
 		"Wait for its nadir.", 0},
@@ -349,7 +349,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"Don't jump too high here!\n"
 		"No conveyor will catch you;\n"
 		"you'd fall to your death.", 0},
-	{0, -6432, -6192,   584, 22, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0, -6432, -6192,   584, 22, 'E', SKINCOLOR_EMERALD, 0,
 		"Conveyors! Magma!\n"
 		"What an intense room this is!\n"
 		"But, what brought you here?", 0},
@@ -377,7 +377,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"Gears with missing teeth\n"
 		"can hide a clever secret!\n"
 		"Think Green Hill Zone boss.", 0},
-	{0,  1920, 20608,  1064, 23, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0,  1920, 20608,  1064, 23, 'E', SKINCOLOR_EMERALD, 0,
 		"Just before you reach\n"
 		"the defective cargo bay,\n"
 		"fly under a bridge.", 0},
@@ -398,7 +398,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"[PH] In the ceiling of the conveyor belt + laser hallway.", 0},
 	{0,-13728,-13728,  1552, 24, 'D', SKINCOLOR_ORANGE, 0,
 		"[PH] On top of the platform with rows of spikes in reverse gravity.", 0},
-	{0,-14944,   768,  1232, 24, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0,-14944,   768,  1232, 24, 'E', SKINCOLOR_EMERALD, 0,
 		"Follow the leader.", 0},
 */
 
@@ -430,7 +430,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"The underground room\n"
 		"with platforms that fall and rise\n"
 		"only LOOKS empty...", 0},
-	{0 , 4960, -6112,  1312, 30, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0 , 4960, -6112,  1312, 30, 'E', SKINCOLOR_EMERALD, 0,
 		"This one's straightforward.\n"
 		"What comes to mind when I say:\n"
 		"\"WELCOME TO WARP ZONE!\"?", 0},
@@ -458,7 +458,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"Much like the last one,\n"
 		"you need to find some switches.\n"
 		"Only two, this time.", 0},
-	{0, 13184, 18880,  6672, 40, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0, 13184, 18880,  6672, 40, 'E', SKINCOLOR_EMERALD, 0,
 		"The inner sanctum!\n"
 		"Teleport to its switches;\n"
 		"then, check near the goal.", 0},
@@ -486,7 +486,7 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 		"A room of currents;\n"
 		"most of them are marked by spikes.\n"
 		"This one? A corner.", 0},
-	{0, -4128, 21344,  1120, 41, 'E', SKINCOLOR_NEONGREEN, 0,
+	{0, -4128, 21344,  1120, 41, 'E', SKINCOLOR_EMERALD, 0,
 		"The only way to hit\n"
 		"all those gems at once is with\n"
 		"a radial blast.", 0},
@@ -498,63 +498,63 @@ emblem_t emblemlocations[MAXEMBLEMS] =
 
 	// FLORAL FIELD
 	// ---
-	{0, 5394, -996, 160, 50, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
+	{0, 5394, -996, 160, 50, 'N', SKINCOLOR_RUST, 0, "", 0},
 	{ET_NGRADE, 0,0,0,   50, 'Q', SKINCOLOR_TEAL,     GRADE_A, "", 0},
 	{ET_NTIME,  0,0,0,   50, 'T', SKINCOLOR_GREY,  40*TICRATE, "", 0},
 
 
 	// TOXIC PLATEAU
 	// ---
-	{0, 780, -1664, 32, 51, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
+	{0, 780, -1664, 32, 51, 'N', SKINCOLOR_RUST, 0, "", 0},
 	{ET_NGRADE, 0,0,0,  51, 'Q', SKINCOLOR_TEAL,     GRADE_A, "", 0},
 	{ET_NTIME,  0,0,0,  51, 'T', SKINCOLOR_GREY,  50*TICRATE, "", 0},
 
 
 	// FLOODED COVE
 	// ---
-	{0, 1824, -1888, 2448, 52, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
+	{0, 1824, -1888, 2448, 52, 'N', SKINCOLOR_RUST, 0, "", 0},
 	{ET_NGRADE, 0,0,0,     52, 'Q', SKINCOLOR_TEAL,     GRADE_A, "", 0},
 	{ET_NTIME,  0,0,0,     52, 'T', SKINCOLOR_GREY,  90*TICRATE, "", 0},
 
 
 	// CAVERN FORTRESS
 	// ---
-	{0, -3089, -431, 1328, 53, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
+	{0, -3089, -431, 1328, 53, 'N', SKINCOLOR_RUST, 0, "", 0},
 	{ET_NGRADE, 0,0,0,     53, 'Q', SKINCOLOR_TEAL,     GRADE_A, "", 0},
 	{ET_NTIME,  0,0,0,     53, 'T', SKINCOLOR_GREY,  75*TICRATE, "", 0},
 
 
 	// DUSTY WASTELAND
 	// ---
-	{0, 957, 924, 2956, 54, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
+	{0, 957, 924, 2956, 54, 'N', SKINCOLOR_RUST, 0, "", 0},
 	{ET_NGRADE, 0,0,0,  54, 'Q', SKINCOLOR_TEAL,     GRADE_A, "", 0},
 	{ET_NTIME,  0,0,0,  54, 'T', SKINCOLOR_GREY,  65*TICRATE, "", 0},
 
 
 	// MAGMA CAVES
 	// ---
-	{0, -2752, 3104, 1800, 55, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
+	{0, -2752, 3104, 1800, 55, 'N', SKINCOLOR_RUST, 0, "", 0},
 	{ET_NGRADE, 0,0,0,     55, 'Q', SKINCOLOR_TEAL,     GRADE_A, "", 0},
 	{ET_NTIME,  0,0,0,     55, 'T', SKINCOLOR_GREY,  80*TICRATE, "", 0},
 
 
 	// EGG SATELLITE
 	// ---
-	{0, 5334, -609, 3426, 56, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
+	{0, 5334, -609, 3426, 56, 'N', SKINCOLOR_RUST, 0, "", 0},
 	{ET_NGRADE, 0,0,0,    56, 'Q', SKINCOLOR_TEAL,     GRADE_A, "", 0},
 	{ET_NTIME,  0,0,0,    56, 'T', SKINCOLOR_GREY, 120*TICRATE, "", 0},
 
 
 	// BLACK HOLE
 	// ---
-	{0, 2108, 3776, 32, 57, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
+	{0, 2108, 3776, 32, 57, 'N', SKINCOLOR_RUST, 0, "", 0},
 	{ET_NGRADE, 0,0,0,  57, 'Q', SKINCOLOR_TEAL,     GRADE_A, "", 0},
 	{ET_NTIME,  0,0,0,  57, 'T', SKINCOLOR_GREY, 150*TICRATE, "", 0},
 
 
 	// SPRING HILL
 	// ---
-	{0, -1840, -1024, 1644, 58, 'N', SKINCOLOR_ROSEWOOD, 0, "", 0},
+	{0, -1840, -1024, 1644, 58, 'N', SKINCOLOR_RUST, 0, "", 0},
 	{ET_NGRADE, 0,0,0,      58, 'Q', SKINCOLOR_TEAL,     GRADE_A, "", 0},
 	{ET_NTIME,  0,0,0,      58, 'T', SKINCOLOR_GREY,  60*TICRATE, "", 0},
 };
@@ -565,7 +565,7 @@ extraemblem_t extraemblems[MAXEXTRAEMBLEMS] =
 	{"Game Complete",  "Complete 1P Mode",                    10, 'X', SKINCOLOR_BLUE, 0},
 	{"All Emeralds",   "Complete 1P Mode with all Emeralds",  11, 'V', SKINCOLOR_GREY, 0},
 	{"Perfect Bonus",  "Perfect Bonus on a non-secret stage", 30, 'P', SKINCOLOR_GOLD, 0},
-	{"SRB1 Remake",    "Complete SRB1 Remake",                21, 'O', SKINCOLOR_ROSEWOOD, 0},
+	{"SRB1 Remake",    "Complete SRB1 Remake",                21, 'O', SKINCOLOR_RUST, 0},
 	{"NiGHTS Mastery", "Show your mastery of NiGHTS!",        22, 'W', SKINCOLOR_TEAL, 0},
 };
 
diff --git a/src/m_menu.c b/src/m_menu.c
index 9901055e3138267f5fc20c50329bf7f98de71cf2..13465b266e3c6fdeecd5060d072cca878855ef39 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -2823,7 +2823,7 @@ static void M_DrawSlider(INT32 x, INT32 y, const consvar_t *cv)
 void M_DrawTextBox(INT32 x, INT32 y, INT32 width, INT32 boxlines)
 {
 	// Solid color textbox.
-	V_DrawFill(x+5, y+5, width*8+6, boxlines*8+6, 239);
+	V_DrawFill(x+5, y+5, width*8+6, boxlines*8+6, 159);
 	//V_DrawFill(x+8, y+8, width*8, boxlines*8, 31);
 /*
 	patch_t *p;
@@ -7406,3 +7406,4 @@ static void M_HandleFogColor(INT32 choice)
 	}
 }
 #endif
+
diff --git a/src/r_draw.c b/src/r_draw.c
index 766e0428e09844b2f32d96ca00d257c3a4bc8f23..4cc70b7952409e95c5ef04ea713862da8db50f49 100644
--- a/src/r_draw.c
+++ b/src/r_draw.c
@@ -127,7 +127,7 @@ UINT32 nflatxshift, nflatyshift, nflatshiftup, nflatmask;
 #define METALSONIC_TT_CACHE_INDEX (MAXSKINS + 2)
 #define ALLWHITE_TT_CACHE_INDEX (MAXSKINS + 3)
 #define SKIN_RAMP_LENGTH 16
-#define DEFAULT_STARTTRANSCOLOR 160
+#define DEFAULT_STARTTRANSCOLOR 96
 #define NUM_PALETTE_ENTRIES 256
 
 static UINT8** translationtablecache[MAXSKINS + 4] = {NULL};
@@ -137,62 +137,70 @@ static UINT8** translationtablecache[MAXSKINS + 4] = {NULL};
 // TODO Callum: Can this be translated?
 const char *Color_Names[MAXSKINCOLORS] =
 {
-	"None",      // SKINCOLOR_NONE
-	"White",     // SKINCOLOR_WHITE
-	"Silver",    // SKINCOLOR_SILVER
-	"Grey",      // SKINCOLOR_GREY
-	"Black",     // SKINCOLOR_BLACK
-	"Cyan",      // SKINCOLOR_CYAN
-	"Teal",      // SKINCOLOR_TEAL
-	"Steel_Blue",// SKINCOLOR_STEELBLUE
-	"Blue",      // SKINCOLOR_BLUE
-	"Peach",     // SKINCOLOR_PEACH
-	"Tan",       // SKINCOLOR_TAN
-	"Pink",      // SKINCOLOR_PINK
-	"Lavender",  // SKINCOLOR_LAVENDER
-	"Purple",    // SKINCOLOR_PURPLE
-	"Orange",    // SKINCOLOR_ORANGE
-	"Rosewood",  // SKINCOLOR_ROSEWOOD
-	"Beige",     // SKINCOLOR_BEIGE
-	"Brown",     // SKINCOLOR_BROWN
-	"Red",       // SKINCOLOR_RED
-	"Dark_Red",  // SKINCOLOR_DARKRED
-	"Neon_Green",// SKINCOLOR_NEONGREEN
-	"Green",     // SKINCOLOR_GREEN
-	"Zim",       // SKINCOLOR_ZIM
-	"Olive",     // SKINCOLOR_OLIVE
-	"Yellow",    // SKINCOLOR_YELLOW
-	"Gold"       // SKINCOLOR_GOLD
+	"None",     	// SKINCOLOR_NONE
+	"White",    	// SKINCOLOR_WHITE
+	"Silver",   	// SKINCOLOR_SILVER
+	"Grey",	    	// SKINCOLOR_GREY
+	"Black",    	// SKINCOLOR_BLACK
+	"Beige",    	// SKINCOLOR_BEIGE
+	"Peach",    	// SKINCOLOR_PEACH
+	"Brown",    	// SKINCOLOR_BROWN
+	"Red",      	// SKINCOLOR_RED
+	"Crimson",     	// SKINCOLOR_CRIMSON
+	"Orange",   	// SKINCOLOR_ORANGE
+	"Rust",     	// SKINCOLOR_RUST
+	"Gold",      	// SKINCOLOR_GOLD
+	"Yellow",   	// SKINCOLOR_YELLOW
+	"Tan",      	// SKINCOLOR_TAN
+	"Moss",      	// SKINCOLOR_MOSS
+	"Peridot",    	// SKINCOLOR_PERIDOT
+	"Green",    	// SKINCOLOR_GREEN
+	"Emerald",  	// SKINCOLOR_EMERALD
+	"Aqua",     	// SKINCOLOR_AQUA
+	"Teal",     	// SKINCOLOR_TEAL
+	"Cyan",     	// SKINCOLOR_CYAN
+	"Blue",     	// SKINCOLOR_BLUE
+	"Azure",    	// SKINCOLOR_AZURE
+	"Pastel",		// SKINCOLOR_PASTEL
+	"Purple",   	// SKINCOLOR_PURPLE
+	"Lavender", 	// SKINCOLOR_LAVENDER
+	"Magenta",   	// SKINCOLOR_MAGENTA
+	"Pink",     	// SKINCOLOR_PINK
+	"Rosy"     	// SKINCOLOR_ROSY
 };
 
 const UINT8 Color_Opposite[MAXSKINCOLORS*2] =
 {
-	SKINCOLOR_NONE,8,   // SKINCOLOR_NONE
-	SKINCOLOR_BLACK,10, // SKINCOLOR_WHITE
-	SKINCOLOR_GREY,4,   // SKINCOLOR_SILVER
-	SKINCOLOR_SILVER,12,// SKINCOLOR_GREY
-	SKINCOLOR_WHITE,8,  // SKINCOLOR_BLACK
-	SKINCOLOR_NONE,8,   // SKINCOLOR_CYAN
-	SKINCOLOR_NONE,8,   // SKINCOLOR_TEAL
-	SKINCOLOR_NONE,8,   // SKINCOLOR_STEELBLUE
-	SKINCOLOR_ORANGE,9, // SKINCOLOR_BLUE
-	SKINCOLOR_NONE,8,   // SKINCOLOR_PEACH
-	SKINCOLOR_NONE,8,   // SKINCOLOR_TAN
-	SKINCOLOR_NONE,8,   // SKINCOLOR_PINK
-	SKINCOLOR_NONE,8,   // SKINCOLOR_LAVENDER
-	SKINCOLOR_NONE,8,   // SKINCOLOR_PURPLE
-	SKINCOLOR_BLUE,12,  // SKINCOLOR_ORANGE
-	SKINCOLOR_NONE,8,   // SKINCOLOR_ROSEWOOD
-	SKINCOLOR_NONE,8,   // SKINCOLOR_BEIGE
-	SKINCOLOR_NONE,8,   // SKINCOLOR_BROWN
-	SKINCOLOR_GREEN,5,  // SKINCOLOR_RED
-	SKINCOLOR_NONE,8,   // SKINCOLOR_DARKRED
-	SKINCOLOR_NONE,8,   // SKINCOLOR_NEONGREEN
-	SKINCOLOR_RED,11,   // SKINCOLOR_GREEN
-	SKINCOLOR_PURPLE,3, // SKINCOLOR_ZIM
-	SKINCOLOR_NONE,8,   // SKINCOLOR_OLIVE
-	SKINCOLOR_NONE,8,   // SKINCOLOR_YELLOW
-	SKINCOLOR_NONE,8    // SKINCOLOR_GOLD
+	SKINCOLOR_NONE,8,   	// SKINCOLOR_NONE
+	SKINCOLOR_BLACK,10, 	// SKINCOLOR_WHITE
+	SKINCOLOR_GREY,4,   	// SKINCOLOR_SILVER
+	SKINCOLOR_SILVER,12,	// SKINCOLOR_GREY
+	SKINCOLOR_WHITE,8,  	// SKINCOLOR_BLACK
+	SKINCOLOR_BEIGE,8,   	// SKINCOLOR_BEIGE - needs new offset
+	SKINCOLOR_BROWN,8,   	// SKINCOLOR_PEACH - ditto
+	SKINCOLOR_PEACH,8,   	// SKINCOLOR_BROWN - ditto
+	SKINCOLOR_GREEN,5,  	// SKINCOLOR_RED
+	SKINCOLOR_CYAN,8,   	// SKINCOLOR_CRIMSON - ditto
+	SKINCOLOR_BLUE,12,  	// SKINCOLOR_ORANGE
+	SKINCOLOR_TAN,8,   		// SKINCOLOR_RUST - ditto
+	SKINCOLOR_LAVENDER,8,    // SKINCOLOR_GOLD - ditto
+	SKINCOLOR_TEAL,8,   	// SKINCOLOR_YELLOW - ditto
+	SKINCOLOR_RUST,8,   	// SKINCOLOR_TAN - ditto
+	SKINCOLOR_MAGENTA,3, 	// SKINCOLOR_MOSS
+	SKINCOLOR_PURPLE,8,   	// SKINCOLOR_PERIDOT - ditto
+	SKINCOLOR_RED,11,   	// SKINCOLOR_GREEN
+	SKINCOLOR_PASTEL,8,   	// SKINCOLOR_EMERALD - ditto
+	SKINCOLOR_ROSY,8,   	// SKINCOLOR_AQUA - ditto
+	SKINCOLOR_YELLOW,8,   	// SKINCOLOR_TEAL - ditto
+	SKINCOLOR_CRIMSON,8,   	// SKINCOLOR_CYAN - ditto
+	SKINCOLOR_ORANGE,9, 	// SKINCOLOR_BLUE
+	SKINCOLOR_PINK,8,   	// SKINCOLOR_AZURE - ditto
+	SKINCOLOR_EMERALD,8,   	// SKINCOLOR_PASTEL - ditto
+	SKINCOLOR_PERIDOT,8,   	// SKINCOLOR_PURPLE - ditto
+	SKINCOLOR_GOLD,8,   	// SKINCOLOR_LAVENDER - ditto
+	SKINCOLOR_MOSS,8,   	// SKINCOLOR_MAGENTA - ditto
+	SKINCOLOR_AZURE,8,   	// SKINCOLOR_PINK - ditto
+	SKINCOLOR_AQUA,8   	// SKINCOLOR_ROSY - ditto
 };
 
 CV_PossibleValue_t Color_cons_t[MAXSKINCOLORS+1];
@@ -242,27 +250,31 @@ static void R_GenerateTranslationColormap(UINT8 *dest_colormap, INT32 skinnum, U
 		0x03, // SKINCOLOR_SILVER
 		0x08, // SKINCOLOR_GREY
 		0x18, // SKINCOLOR_BLACK
-		0xd0, // SKINCOLOR_CYAN
-		0xdc, // SKINCOLOR_TEAL
-		0xc8, // SKINCOLOR_STEELBLUE
-		0xe2, // SKINCOLOR_BLUE
-		0x40, // SKINCOLOR_PEACH
-		0x48, // SKINCOLOR_TAN
-		0x90, // SKINCOLOR_PINK
-		0xf8, // SKINCOLOR_LAVENDER
-		0xc0, // SKINCOLOR_PURPLE
-		0x52, // SKINCOLOR_ORANGE
-		0x5c, // SKINCOLOR_ROSEWOOD
-		0x20, // SKINCOLOR_BEIGE
-		0x30, // SKINCOLOR_BROWN
-		0x7d, // SKINCOLOR_RED
-		0x85, // SKINCOLOR_DARKRED
-		0xb8, // SKINCOLOR_NEONGREEN
-		0xa0, // SKINCOLOR_GREEN
-		0xb0, // SKINCOLOR_ZIM
-		0x69, // SKINCOLOR_OLIVE
-		0x67, // SKINCOLOR_YELLOW
-		0x70, // SKINCOLOR_GOLD
+		0xf0, // SKINCOLOR_BEIGE
+		0xd8, // SKINCOLOR_PEACH
+		0xe0, // SKINCOLOR_BROWN
+		0x21, // SKINCOLOR_RED
+		0x28, // SKINCOLOR_CRIMSON
+		0x31, // SKINCOLOR_ORANGE
+		0x3a, // SKINCOLOR_RUST
+		0x40, // SKINCOLOR_GOLD
+		0x48, // SKINCOLOR_YELLOW
+		0x54, // SKINCOLOR_TAN
+		0x58, // SKINCOLOR_MOSS
+		0xbc, // SKINCOLOR_PERIDOT
+		0x60, // SKINCOLOR_GREEN
+		0x70, // SKINCOLOR_EMERALD
+		0x78, // SKINCOLOR_AQUA
+		0x8c, // SKINCOLOR_TEAL
+		0x80, // SKINCOLOR_CYAN
+		0x92, // SKINCOLOR_BLUE
+		0xaa, // SKINCOLOR_AZURE
+		0xa0, // SKINCOLOR_PASTEL
+		0xa0, // SKINCOLOR_PURPLE
+		0xc0, // SKINCOLOR_LAVENDER
+		0xb3, // SKINCOLOR_MAGENTA
+		0xd0, // SKINCOLOR_PINK
+		0xc8, // SKINCOLOR_ROSY
 	};
 	INT32 i;
 	INT32 starttranscolor;
@@ -280,7 +292,7 @@ static void R_GenerateTranslationColormap(UINT8 *dest_colormap, INT32 skinnum, U
 		if (skinnum == TC_BOSS)
 			dest_colormap[31] = 0;
 		else if (skinnum == TC_METALSONIC)
-			dest_colormap[239] = 0;
+			dest_colormap[159] = 0;
 
 		return;
 	}
@@ -299,196 +311,339 @@ static void R_GenerateTranslationColormap(UINT8 *dest_colormap, INT32 skinnum, U
 	{
 	case SKINCOLOR_SILVER:
 	case SKINCOLOR_GREY:
-	case SKINCOLOR_PEACH:
-	case SKINCOLOR_BEIGE:
 	case SKINCOLOR_BROWN:
-	case SKINCOLOR_RED:
 	case SKINCOLOR_GREEN:
-	case SKINCOLOR_BLUE:
 		// 16 color ramp
 		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
 			dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
 		break;
 
-	case SKINCOLOR_ORANGE:
-		// 14 colors of orange + brown
-		for (i = 0; i < SKIN_RAMP_LENGTH-2; i++)
-			dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
-		for (i = 0; i < 2; i++)
-			dest_colormap[starttranscolor + (i+SKIN_RAMP_LENGTH-2)] = (UINT8)(152 + i);
-		break;
-
+	case SKINCOLOR_WHITE:
 	case SKINCOLOR_CYAN:
 		// 12 color ramp
 		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
 			dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (12*i/SKIN_RAMP_LENGTH));
 		break;
 
-	case SKINCOLOR_WHITE:
 	case SKINCOLOR_BLACK:
-	case SKINCOLOR_STEELBLUE:
-	case SKINCOLOR_PINK:
+	case SKINCOLOR_MOSS:
+	case SKINCOLOR_EMERALD:
 	case SKINCOLOR_LAVENDER:
-	case SKINCOLOR_PURPLE:
-	case SKINCOLOR_DARKRED:
-	case SKINCOLOR_ZIM:
-	case SKINCOLOR_YELLOW:
-	case SKINCOLOR_GOLD:
+	case SKINCOLOR_PINK:
 		// 8 color ramp
 		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
 			dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1));
 		break;
 
-	case SKINCOLOR_TEAL:
-		// 5 color ramp
+	case SKINCOLOR_BEIGE:
+		// 13 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i == 15)
+				dest_colormap[starttranscolor + i] = 0xed; // Darkest
+			else if (i <= 6)
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + ((i + 1) >> 1)); // Brightest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 3);
+		}
+		break;
+		
+	case SKINCOLOR_PEACH:
+		// 11 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i == 0)
+				dest_colormap[starttranscolor + i] = 0xD0; // Lightest 1
+			else if (i == 1)
+				dest_colormap[starttranscolor + i] = 0x30; // Lightest 2
+			else if (i <= 11)
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 1);
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 7); // Darkest
+		}
+		break;
+		
+	case SKINCOLOR_RED:
+		// 16 colors
 		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
 		{
-			if (5*i/16 == 0)
-				dest_colormap[starttranscolor + i] = 0xf7;
+			if (i == 13)
+				dest_colormap[starttranscolor + i] = 0x47; // Semidark
+			else if (i > 13)
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 1); // Darkest
 			else
-				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (5*i/SKIN_RAMP_LENGTH) - 1);
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
 		}
 		break;
 
-	case SKINCOLOR_OLIVE:
-		// 7 color ramp
+	case SKINCOLOR_CRIMSON:
+		// 9 colors
 		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
-			dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (7*i/SKIN_RAMP_LENGTH));
+		{
+			if (i/2 == 6)
+				dest_colormap[starttranscolor + i] = 0x47; // Semidark
+			else if (i/2 == 7)
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 8); // Darkest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1));
+		}
+		break;
+
+	case SKINCOLOR_ORANGE:
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i == 15)
+				dest_colormap[starttranscolor + i] = 0x2c; // Darkest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
+		}
+		break;
+
+	case SKINCOLOR_RUST:
+		// 10 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i <= 11)
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1));
+			else if (i == 12)
+				dest_colormap[starttranscolor + i] = 0x2c; // Darkest 4
+			else if (i == 13)
+				dest_colormap[starttranscolor + i] = 0xfe; // Darkest 3
+			else
+				dest_colormap[starttranscolor + i] = 0x2d + i - 14; // Darkest 2 and 1
+		}
+		break;
+
+	case SKINCOLOR_GOLD:
+		// 10 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i == 0)
+				dest_colormap[starttranscolor + i] = 0x50; // Lightest 1
+			else if (i == 1)
+				dest_colormap[starttranscolor + i] = 0x53; // Lightest 2
+			else if (i/2 == 7)
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 8); //Darkest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 1);
+		}
+		break;
+
+	case SKINCOLOR_YELLOW:
+		// 10 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i == 0)
+				dest_colormap[starttranscolor + i] = 0x53; // Lightest
+			else if (i == 15)
+				dest_colormap[starttranscolor + i] = 0xed; // Darkest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1));
+		}
 		break;
 
 	case SKINCOLOR_TAN:
-		// 16 color ramp, from two color ranges
-		for (i = 0; i < SKIN_RAMP_LENGTH/2; i++) // Peach half
-			dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
-		for (i = 0; i < SKIN_RAMP_LENGTH/2; i++) // Brown half
-			dest_colormap[starttranscolor + (i+8)] = (UINT8)(48 + i);
+		// 8 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i/2 == 0)
+				dest_colormap[starttranscolor + i] = 0x51; // Lightest
+			else if (i/2 == 5)
+				dest_colormap[starttranscolor + i] = 0xf5; // Darkest 1
+			else if (i/2 == 6)
+				dest_colormap[starttranscolor + i] = 0xf9; // Darkest 2
+			else if (i/2 == 7)
+				dest_colormap[starttranscolor + i] = 0xed; // Darkest 3
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 1);
+		}
 		break;
 
-	case SKINCOLOR_ROSEWOOD:
-		// 12 color ramp, from two color ranges!
-		for (i = 0; i < 6; i++) // Orange ...third?
-			dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (12*i/SKIN_RAMP_LENGTH));
-		for (i = 0; i < 10; i++) // Rosewood two-thirds-ish
-			dest_colormap[starttranscolor + (i+6)] = (UINT8)(152 + (12*i/SKIN_RAMP_LENGTH));
+	case SKINCOLOR_PERIDOT:
+		// 8 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i/2 == 0)
+				dest_colormap[starttranscolor + i] = 0x58; // Lightest
+			else if (i/2 == 7)
+				dest_colormap[starttranscolor + i] = 0x77; // Darkest
+			else if (i/2 >= 5)
+				dest_colormap[starttranscolor + i] = (UINT8)(0x5e + (i >> 1) - 5); // Semidark
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 1);
+		}
 		break;
 
-	case SKINCOLOR_NEONGREEN:
-		// Multi-color ramp
-		dest_colormap[starttranscolor] = 0xA0; // Brighter green
-		for (i = 0; i < SKIN_RAMP_LENGTH-1; i++) // Neon Green
-			dest_colormap[starttranscolor + (i+1)] = (UINT8)(skinbasecolors[color - 1] + (6*i/(SKIN_RAMP_LENGTH-1)));
+	case SKINCOLOR_AQUA:
+		// 10 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i == 0)
+				dest_colormap[starttranscolor + i] = 0x78; // Lightest
+			else if (i >= 14)
+				dest_colormap[starttranscolor + i] = (UINT8)(0x76 + i - 14); // Darkest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) + 1);
+		}
+		break;
+
+	case SKINCOLOR_TEAL:
+		// 6 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i <= 1)
+				dest_colormap[starttranscolor + i] = 0x78; // Lightest
+			else if (i >= 13)
+				dest_colormap[starttranscolor + i] = 0x8a; // Darkest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + ((i - 1)/3));
+		}
+		break;
+
+	case SKINCOLOR_AZURE:
+		// 8 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i <= 3)
+				dest_colormap[starttranscolor + i] = (UINT8)(0x90 + i/2); // Lightest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 2);
+		}
+		break;
+
+	case SKINCOLOR_BLUE:
+		// 16 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i == 15)
+				dest_colormap[starttranscolor + i] = 0x1F; //Darkest 1
+			else if (i == 14)
+				dest_colormap[starttranscolor + i] = 0xfd; //Darkest 2
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i);
+		}
+		break;
+
+	case SKINCOLOR_PASTEL:
+		// 10 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i >= 12)
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i - 7); // Darkest
+			else if (i <= 1)
+				dest_colormap[starttranscolor + i] = 0x90; // Lightest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) - 1);
+		}
+		break;
+
+	case SKINCOLOR_PURPLE:
+		// 10 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i <= 3)
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + i); // Lightest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) + 2);
+		}
+		break;
+
+	case SKINCOLOR_MAGENTA:
+		// 9 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+			if (i == 0)
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1]); // Lightest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + (i >> 1) + 1);
+		break;
+
+	case SKINCOLOR_ROSY:
+		// 9 colors
+		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
+		{
+			if (i == 0)
+				dest_colormap[starttranscolor + i] = 0xfc; // Lightest
+			else
+				dest_colormap[starttranscolor + i] = (UINT8)(skinbasecolors[color - 1] + ((i - 1) >> 1));
+		}
 		break;
 
 	// Super colors, from lightest to darkest!
 	case SKINCOLOR_SUPER1:
 		// Super White
 		for (i = 0; i < 10; i++)
-			dest_colormap[starttranscolor + i] = 120; // True white
-		for (; i < SKIN_RAMP_LENGTH; i++) // White-yellow fade
-			dest_colormap[starttranscolor + i] = (UINT8)(96 + (i-10));
+			dest_colormap[starttranscolor + i] = (UINT8)0; // True white
+		for (; i < 12; i++) // White-yellow fade
+			dest_colormap[starttranscolor + i] = (UINT8)(80);
+		for (; i < 15; i++) // White-yellow fade
+			dest_colormap[starttranscolor + i] = (UINT8)(81 + (i-12));
+		dest_colormap[starttranscolor + 15] = (UINT8)(72);
 		break;
 
 	case SKINCOLOR_SUPER2:
 		// Super Bright
-		for (i = 0; i < 5; i++) // White-yellow fade
-			dest_colormap[starttranscolor + i] = (UINT8)(96 + i);
-		dest_colormap[starttranscolor + 5] = 112; // Golden shine
-		for (i = 0; i < 8; i++) // Yellow
-			dest_colormap[starttranscolor + (i+6)] = (UINT8)(101 + (i>>1));
-		for (i = 0; i < 2; i++) // With a fine golden finish! :3
-			dest_colormap[starttranscolor + (i+14)] = (UINT8)(113 + i);
+		dest_colormap[starttranscolor] = (UINT8)(0);
+		for (i = 1; i < 4; i++) // White-yellow fade
+			dest_colormap[starttranscolor + i] = (UINT8)(80 + (i-1));
+		for (; i < 6; i++) // Yellow
+			dest_colormap[starttranscolor + i] = (UINT8)(83);
+		for (; i < 8; i++) // Yellow
+			dest_colormap[starttranscolor + i] = (UINT8)(72);
+		for (; i < 14; i++) // Yellow
+			dest_colormap[starttranscolor + i] = (UINT8)(73);
+		for (; i < 16; i++) // With a fine golden finish! :3
+			dest_colormap[starttranscolor + i] = (UINT8)(64 + (i-14));
 		break;
 
 	case SKINCOLOR_SUPER3:
 		// Super Yellow
-		for (i = 0; i < 3; i++) // White-yellow fade
-			dest_colormap[starttranscolor + i] = (UINT8)(98 + i);
-		dest_colormap[starttranscolor + 3] = 112; // Golden shine
-		for (i = 0; i < 8; i++) // Yellow
-			dest_colormap[starttranscolor + (i+4)] = (UINT8)(101 + (i>>1));
-		for (i = 0; i < 4; i++) // With a fine golden finish! :3
-			dest_colormap[starttranscolor + (i+12)] = (UINT8)(113 + i);
+		for (i = 0; i < 2; i++) // White-yellow fade
+			dest_colormap[starttranscolor + i] = (UINT8)(81 + i);
+		for (; i < 4; i++)
+			dest_colormap[starttranscolor + i] = (UINT8)(83);
+		for (; i < 6; i++) // Yellow
+			dest_colormap[starttranscolor + i] = (UINT8)(72);
+		for (; i < 12; i++) // Yellow
+			dest_colormap[starttranscolor + i] = (UINT8)(73);
+		for (; i < 16; i++) // With a fine golden finish! :3
+			dest_colormap[starttranscolor + i] = (UINT8)(64 + (i-12));
 		break;
 
 	case SKINCOLOR_SUPER4:
 		// "The SSNTails"
-		dest_colormap[starttranscolor] = 112; // Golden shine
-		for (i = 0; i < 8; i++) // Yellow
-			dest_colormap[starttranscolor + (i+1)] = (UINT8)(101 + (i>>1));
-		for (i = 0; i < 7; i++) // With a fine golden finish! :3
-			dest_colormap[starttranscolor + (i+9)] = (UINT8)(113 + i);
+		dest_colormap[starttranscolor] = 83; // Golden shine
+		for (i = 1; i < 3; i++) // Yellow
+			dest_colormap[starttranscolor + i] = (UINT8)(72);
+		for (; i < 9; i++) // Yellow
+			dest_colormap[starttranscolor + i] = (UINT8)(73);
+		for (; i < 16; i++) // With a fine golden finish! :3
+			dest_colormap[starttranscolor + i] = (UINT8)(64 + (i-9));
 		break;
 
 	case SKINCOLOR_SUPER5:
 		// Golden Delicious
-		for (i = 0; i < 8; i++) // Yellow
-			dest_colormap[starttranscolor + i] = (UINT8)(101 + (i>>1));
-		for (i = 0; i < 7; i++) // With a fine golden finish! :3
-			dest_colormap[starttranscolor + (i+8)] = (UINT8)(113 + i);
-		dest_colormap[starttranscolor + 15] = 155;
+		for (i = 0; i < 2; i++) // Yellow
+			dest_colormap[starttranscolor + i] = (UINT8)(72);
+		for (; i < 8; i++) // Yellow
+			dest_colormap[starttranscolor + i] = (UINT8)(73);
+		for (; i < 15; i++) // With a fine golden finish! :3
+			dest_colormap[starttranscolor + i] = (UINT8)(64 + (i-8));
+		dest_colormap[starttranscolor + 15] = (UINT8)63;
 		break;
 
-	// Super Tails
+	// Super Tails and Knuckles, who really should be dummied out by now
 	case SKINCOLOR_TSUPER1:
-		for (i = 0; i < 10; i++) // white
-			dest_colormap[starttranscolor + i] = 120;
-		for (; i < SKIN_RAMP_LENGTH; i++) // orange
-			dest_colormap[starttranscolor + i] = (UINT8)(80 + (i-10));
-		break;
-
 	case SKINCOLOR_TSUPER2:
-		for (i = 0; i < 4; i++) // white
-			dest_colormap[starttranscolor + i] = 120;
-		for (; i < SKIN_RAMP_LENGTH; i++) // orange
-			dest_colormap[starttranscolor + i] = (UINT8)(80 + ((i-4)>>1));
-		break;
-
 	case SKINCOLOR_TSUPER3:
-		dest_colormap[starttranscolor] = 120; // pure white
-		dest_colormap[starttranscolor+1] = 120;
-		for (i = 2; i < SKIN_RAMP_LENGTH; i++) // orange
-			dest_colormap[starttranscolor + i] = (UINT8)(80 + ((i-2)>>1));
-		break;
-
 	case SKINCOLOR_TSUPER4:
-		dest_colormap[starttranscolor] = 120; // pure white
-		for (i = 1; i < 9; i++) // orange
-			dest_colormap[starttranscolor + i] = (UINT8)(80 + (i-1));
-		for (; i < SKIN_RAMP_LENGTH; i++) // gold
-			dest_colormap[starttranscolor + i] = (UINT8)(115 + (5*(i-9)/7));
-		break;
-
 	case SKINCOLOR_TSUPER5:
-		for (i = 0; i < 8; i++) // orange
-			dest_colormap[starttranscolor + i] = (UINT8)(80 + i);
-		for (; i < SKIN_RAMP_LENGTH; i++) // gold
-			dest_colormap[starttranscolor + i] = (UINT8)(115 + (5*(i-8)/8));
-		break;
-
-	// Super Knuckles
 	case SKINCOLOR_KSUPER1:
-		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
-			dest_colormap[starttranscolor + i] = (UINT8)(120 + (i >> 2));
-		break;
-
 	case SKINCOLOR_KSUPER2:
-		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
-			dest_colormap[starttranscolor + i] = (UINT8)(120 + (6*i/SKIN_RAMP_LENGTH));
-		break;
-
 	case SKINCOLOR_KSUPER3:
-		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
-			dest_colormap[starttranscolor + i] = (UINT8)(120 + (i >> 1));
-		break;
-
 	case SKINCOLOR_KSUPER4:
-		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
-			dest_colormap[starttranscolor + i] = (UINT8)(121 + (i >> 1));
-		break;
-
 	case SKINCOLOR_KSUPER5:
 		for (i = 0; i < SKIN_RAMP_LENGTH; i++)
-			dest_colormap[starttranscolor + i] = (UINT8)(122 + (i >> 1));
+			dest_colormap[starttranscolor + i] = 0xFF;
 		break;
 
 	default:
@@ -802,3 +957,4 @@ void R_DrawViewBorder(void)
 // ==========================================================================
 
 #include "r_draw16.c"
+
diff --git a/src/r_draw8.c b/src/r_draw8.c
index 2a4c89be7f678c6c7813161f25770637e862137d..d3f6e18d6792a18e4421ac286185478861835282 100644
--- a/src/r_draw8.c
+++ b/src/r_draw8.c
@@ -105,7 +105,7 @@ void R_DrawColumn_8(void)
 	}
 }
 
-#define TRANSPARENTPIXEL 247
+#define TRANSPARENTPIXEL 255
 
 void R_Draw2sMultiPatchColumn_8(void)
 {
@@ -1388,3 +1388,4 @@ void R_DrawColumnShadowed_8(void)
 	if (dc_yl <= realyh)
 		walldrawerfunc();		// R_DrawWallColumn_8 for the appropriate architecture
 }
+
diff --git a/src/r_main.c b/src/r_main.c
index 1170b34144c4dd8ecaf2b25f23d12607f28804e4..734e18d80e339a1d72da8a65a06d8ad5710ef64a 100644
--- a/src/r_main.c
+++ b/src/r_main.c
@@ -1278,7 +1278,7 @@ void R_RenderPlayerView(player_t *player)
 		if (cv_homremoval.value == 1)
 			V_DrawFill(0, 0, vid.width, vid.height, 31); // No HOM effect!
 		else //'development' HOM removal -- makes it blindingly obvious if HOM is spotted.
-			V_DrawFill(0, 0, vid.width, vid.height, 128+(timeinmap&15));
+			V_DrawFill(0, 0, vid.width, vid.height, 32+(timeinmap&15));
 	}
 
 	portalrender = 0;
diff --git a/src/r_things.c b/src/r_things.c
index 60fbad1af0d7f4a1a18b288d444a03fe0ded3a29..72b89a0aa1af0ad0278877a4ca339cd4eed7a8ab 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -2285,7 +2285,7 @@ static void Sk_SetDefaultValue(skin_t *skin)
 	strncpy(skin->face, "MISSING", 8);
 	strncpy(skin->superface, "MISSING", 8);
 
-	skin->starttranscolor = 160;
+	skin->starttranscolor = 96;
 	skin->prefcolor = SKINCOLOR_GREEN;
 
 	skin->normalspeed = 36<<FRACBITS;
diff --git a/src/st_stuff.c b/src/st_stuff.c
index 6e19b92ff05a3fe436c4e7ab5010ecb942ec12cf..5ed9fbe480916ffd2fb7adf84b325fb58e2b56ee 100644
--- a/src/st_stuff.c
+++ b/src/st_stuff.c
@@ -888,8 +888,8 @@ static void ST_drawFirstPersonHUD(void)
 
 // [21:42] <+Rob> Beige - Lavender - Steel Blue - Peach - Orange - Purple - Silver - Yellow - Pink - Red - Blue - Green - Cyan - Gold
 static skincolors_t linkColor[14] =
-{SKINCOLOR_BEIGE,  SKINCOLOR_LAVENDER, SKINCOLOR_STEELBLUE, SKINCOLOR_PEACH, SKINCOLOR_ORANGE,
- SKINCOLOR_PURPLE, SKINCOLOR_SILVER,   SKINCOLOR_SUPER4,    SKINCOLOR_PINK,  SKINCOLOR_RED,
+{SKINCOLOR_BEIGE,  SKINCOLOR_LAVENDER, SKINCOLOR_AZURE, SKINCOLOR_PEACH, SKINCOLOR_ORANGE,
+ SKINCOLOR_MAGENTA, SKINCOLOR_SILVER,   SKINCOLOR_SUPER4,    SKINCOLOR_PINK,  SKINCOLOR_RED,
  SKINCOLOR_BLUE,   SKINCOLOR_GREEN,    SKINCOLOR_CYAN,      SKINCOLOR_GOLD};
 
 static void ST_drawNightsRecords(void)
@@ -938,7 +938,7 @@ static void ST_drawNightsRecords(void)
 		V_DrawString(BASEVIDWIDTH/2 - 48, STRINGY(148), aflag, "BONUS:");
 		V_DrawRightAlignedString(BASEVIDWIDTH/2 + 48, STRINGY(140), V_ORANGEMAP|aflag, va("%d", stplyr->finishedrings));
 		V_DrawRightAlignedString(BASEVIDWIDTH/2 + 48, STRINGY(148), V_ORANGEMAP|aflag, va("%d", stplyr->finishedrings * 50));
-		ST_DrawNightsOverlayNum(BASEVIDWIDTH/2 + 48, STRINGY(160), aflag, stplyr->lastmarescore, nightsnum, SKINCOLOR_STEELBLUE);
+		ST_DrawNightsOverlayNum(BASEVIDWIDTH/2 + 48, STRINGY(160), aflag, stplyr->lastmarescore, nightsnum, SKINCOLOR_AZURE);
 
 		// If new record, say so!
 		if (!(netgame || multiplayer) && G_GetBestNightsScore(gamemap, stplyr->lastmare + 1) <= stplyr->lastmarescore)
@@ -1220,7 +1220,7 @@ static void ST_drawNiGHTSHUD(void)
 #endif
 	)
 	{
-		ST_DrawNightsOverlayNum(304, STRINGY(16), SPLITFLAGS(V_SNAPTOTOP)|V_SNAPTORIGHT, stplyr->marescore, nightsnum, SKINCOLOR_STEELBLUE);
+		ST_DrawNightsOverlayNum(304, STRINGY(16), SPLITFLAGS(V_SNAPTOTOP)|V_SNAPTORIGHT, stplyr->marescore, nightsnum, SKINCOLOR_AZURE);
 	}
 
 	if (!stplyr->exiting
diff --git a/src/tmap.nas b/src/tmap.nas
index 6d1629c20d0e9d428154a5117e47cb93bce13262..dbe64806dbede93a24b54b08c9dd3b346ab52dcf 100644
--- a/src/tmap.nas
+++ b/src/tmap.nas
@@ -17,7 +17,7 @@
 [BITS 32]
 
 %define FRACBITS 16
-%define TRANSPARENTPIXEL 247
+%define TRANSPARENTPIXEL 255
 
 %ifdef LINUX
 %macro cextern 1
diff --git a/src/tmap_mmx.nas b/src/tmap_mmx.nas
index 928916668e4b1af6dedfe401a52fe3107d79fa4f..758cd439530ddb65a03605dfb03cbe72561a6f2c 100644
--- a/src/tmap_mmx.nas
+++ b/src/tmap_mmx.nas
@@ -18,7 +18,7 @@
 [BITS 32]
 
 %define FRACBITS 16
-%define TRANSPARENTPIXEL 247
+%define TRANSPARENTPIXEL 255
 
 %ifdef LINUX
 %macro cextern 1