diff --git a/src/p_setup.c b/src/p_setup.c
index a5544c26b74f57e11b06c318d047461dc142808c..052006a350dd90af49a0697c1cca0b9b91843528 100644
--- a/src/p_setup.c
+++ b/src/p_setup.c
@@ -1428,6 +1428,7 @@ static void P_LoadRawSideDefs2(void *data)
 		{
 			case 63: // variable colormap via 242 linedef
 			case 606: //SoM: 4/4/2000: Just colormap transfer
+			case 447: // Change colormap of tagged sectors! -- Monster Iestyn 14/06/18
 				// SoM: R_CreateColormap will only create a colormap in software mode...
 				// Perhaps we should just call it instead of doing the calculations here.
 				if (rendermode == render_soft || rendermode == render_none)
diff --git a/src/p_spec.c b/src/p_spec.c
index 93b5c89ca1bf26d6118bf40b5c542fb638ec3991..9d1e85366b1a003e58423daee8cd5350c58c589b 100644
--- a/src/p_spec.c
+++ b/src/p_spec.c
@@ -3033,6 +3033,15 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec)
 			}
 			break;
 
+		case 447: // Change colormap of tagged sectors!
+			// Basically this special applies a colormap to the tagged sectors, just like 606 (the colormap linedef)
+			// Except it is activated by linedef executor, not level load
+			// This could even override existing colormaps I believe
+			// -- Monster Iestyn 14/06/18
+			for (secnum = -1; (secnum = P_FindSectorFromLineTag(line, secnum)) >= 0 ;)
+				sectors[secnum].midmap = line->frontsector->midmap;
+			break;
+
 		case 448: // Change skybox viewpoint/centerpoint
 			if ((mo && mo->player && P_IsLocalPlayer(mo->player)) || (line->flags & ML_NOCLIMB))
 			{