Index: code/globalincs/alphacolors.cpp
===================================================================
--- code/globalincs/alphacolors.cpp	(revision 10927)
+++ code/globalincs/alphacolors.cpp	(working copy)
@@ -15,7 +15,8 @@
 SCP_map<SCP_string, team_color> Team_Colors;
 SCP_vector<SCP_string> Team_Names;
 
-SCP_map<char, color> Tagged_Colors;
+SCP_map<char, color*> Tagged_Colors;
+SCP_map<char, color> Custom_Colors;
 SCP_vector<char> Color_Tags;
 
 // -----------------------------------------------------------------------------------
@@ -254,7 +255,7 @@
 	}
 
 	for (i = 0; i < DEFAULT_TAGS; i++) {
-		Tagged_Colors[DEFAULT_TAG_LIST[i]] = *DEFAULT_TAG_COLORS[i];
+		Tagged_Colors[DEFAULT_TAG_LIST[i]] = DEFAULT_TAG_COLORS[i];
 		Color_Tags.push_back(DEFAULT_TAG_LIST[i]);
 	}
 
@@ -514,11 +515,13 @@
 						}
 					}
 					gr_init_alphacolor(&temp_color, rgba[0], rgba[1], rgba[2], rgba[3]);
-					Tagged_Colors[tag] = temp_color;
+					Custom_Colors[tag] = temp_color;
+					Tagged_Colors[tag] = &Custom_Colors[tag];
 				//} else if ( check_for_string ("#") ) {
 				//	stuff_hex_list(rgba, 4);
 				//	gr_init_alphacolor(&temp_color, rgba[0], rgba[1], rgba[2], rgba[3]);
-				//	Tagged_Colors[tag] = temp_color;
+				//	Custom_Colors[tag] = temp_color;
+				//	Tagged_Colors[tag] = &Custom_Colors[tag];
 				} else {
 					// We have a string; it should be the name of a color to use.
 					stuff_string(temp, F_NAME);
@@ -530,20 +533,20 @@
 					if ( j == TOTAL_COLORS ) {
 						Error(LOCATION, "Unknown color '%s' in %s, for definition of tag '$%c'.\n", temp.c_str(), filename, tag);
 					}
-					Tagged_Colors[tag] = *COLOR_LIST[j];
+					Tagged_Colors[tag] = COLOR_LIST[j];
 				}
 				break;
 			case 1:	// +Friendly
 				required_string("+Friendly");
-				Tagged_Colors[tag] = Brief_color_green;
+				Tagged_Colors[tag] = &Brief_color_green;
 				break;
 			case 2:	// +Hostile
 				required_string("+Hostile");
-				Tagged_Colors[tag] = Brief_color_red;
+				Tagged_Colors[tag] = &Brief_color_red;
 				break;
 			case 3:	// +Neutral
 				required_string("+Neutral");
-				Tagged_Colors[tag] = Brief_color_legacy_neutral;
+				Tagged_Colors[tag] = &Brief_color_legacy_neutral;
 				break;
 			case -1:
 				// -noparseerrors is set
Index: code/globalincs/alphacolors.h
===================================================================
--- code/globalincs/alphacolors.h	(revision 10927)
+++ code/globalincs/alphacolors.h	(working copy)
@@ -46,7 +46,7 @@
 extern SCP_map<SCP_string, team_color> Team_Colors;
 extern SCP_vector<SCP_string> Team_Names;
 
-extern SCP_map<char, color> Tagged_Colors;
+extern SCP_map<char, color*> Tagged_Colors;
 extern SCP_vector<char> Color_Tags;
 
 #define MAX_DEFAULT_TEXT_COLORS	7
Index: code/mission/missionbriefcommon.cpp
===================================================================
--- code/mission/missionbriefcommon.cpp	(revision 10927)
+++ code/mission/missionbriefcommon.cpp	(working copy)
@@ -1415,7 +1415,7 @@
 
 void brief_set_text_color(char color_tag)
 {
-	gr_set_color_fast(&Tagged_Colors[color_tag]);
+	gr_set_color_fast(Tagged_Colors[color_tag]);
 }
 
 /**
