Index: code/globalincs/alphacolors.h
===================================================================
--- code/globalincs/alphacolors.h	(revision 10757)
+++ code/globalincs/alphacolors.h	(working copy)
@@ -38,6 +38,8 @@
 #define Color_text_active_hi	Color_bright_white
 // text drawn as a heading for a section or title, etc
 #define Color_text_heading		Color_violet_gray
+// color of the "more" indicator in briefings/command briefings/debrefings
+#define Color_more_indicator	Color_red
 
 #define Color_bright Color_bright_blue
 #define Color_normal Color_white
Index: code/missionui/missionbrief.cpp
===================================================================
--- code/missionui/missionbrief.cpp	(revision 10757)
+++ code/missionui/missionbrief.cpp	(working copy)
@@ -1133,14 +1133,10 @@
 			brief_voice_play(Current_brief_stage);
 		}
 
-		if (gr_screen.res == 1) {
-			Max_brief_Lines = 110/gr_get_font_height(); //Make the max number of lines dependent on the font height. 225 and 85 are magic numbers, based on the window size in retail. 
-		} else {
-			Max_brief_Lines = 60/gr_get_font_height();
-		}
+		Max_brief_Lines = Brief_text_coords[gr_screen.res][3]/gr_get_font_height(); //Make the max number of lines dependent on the font height.
 
 		// maybe output the "more" indicator
-		if ( Max_brief_Lines < Num_brief_text_lines[0] ) {
+		if ( (Max_brief_Lines + Top_brief_text_line) < Num_brief_text_lines[0] ) {
 			// can be scrolled down
 			int more_txt_x = Brief_text_coords[gr_screen.res][0] + (Brief_max_line_width[gr_screen.res]/2) - 10;
 			int more_txt_y = Brief_text_coords[gr_screen.res][1] + Brief_text_coords[gr_screen.res][3] - 2;				// located below brief text, centered
@@ -1148,7 +1144,7 @@
 			gr_get_string_size(&w, &h, XSTR("more", 1469), strlen(XSTR("more", 1469)));
 			gr_set_color_fast(&Color_black);
 			gr_rect(more_txt_x-2, more_txt_y, w+3, h, GR_RESIZE_MENU);
-			gr_set_color_fast(&Color_red);
+			gr_set_color_fast(&Color_more_indicator);
 			gr_string(more_txt_x, more_txt_y, XSTR("more", 1469), GR_RESIZE_MENU);  // base location on the input x and y?
 		}
 	}
Index: code/missionui/missioncmdbrief.cpp
===================================================================
--- code/missionui/missioncmdbrief.cpp	(revision 10757)
+++ code/missionui/missioncmdbrief.cpp	(working copy)
@@ -730,14 +730,10 @@
 		Voice_good_to_go = 1;
 	}
 
-	if (gr_screen.res == 1) {
-		Max_cmdbrief_Lines = 166/gr_get_font_height(); //Make the max number of lines dependent on the font height. 225 and 85 are magic numbers, based on the window size in retail. 
-	} else {
-		Max_cmdbrief_Lines = 116/gr_get_font_height();
-	}
+	Max_cmdbrief_Lines = Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_H_COORD]/(gr_get_font_height() + 1); //Make the max number of lines dependent on the font height, keeping in mind that we have an extra pixel between lines.
 
 	// maybe output the "more" indicator
-	if ( Max_cmdbrief_Lines < Num_brief_text_lines[0] ) {
+	if ( (Max_cmdbrief_Lines + Top_cmd_brief_text_line) < Num_brief_text_lines[0] ) {
 		// can be scrolled down
 		int more_txt_x = Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_X_COORD] + (Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_W_COORD]/2) - 10;
 		int more_txt_y = Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_Y_COORD] + Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_H_COORD] - 2;				// located below brief text, centered
@@ -745,7 +741,7 @@
 		gr_get_string_size(&w, &h, XSTR("more", 1469), strlen(XSTR("more", 1469)));
 		gr_set_color_fast(&Color_black);
 		gr_rect(more_txt_x-2, more_txt_y, w+3, h, GR_RESIZE_MENU);
-		gr_set_color_fast(&Color_red);
+		gr_set_color_fast(&Color_more_indicator);
 		gr_string(more_txt_x, more_txt_y, XSTR("more", 1469), GR_RESIZE_MENU);  // base location on the input x and y?
 	}
 
Index: code/missionui/missiondebrief.cpp
===================================================================
--- code/missionui/missiondebrief.cpp	(revision 10757)
+++ code/missionui/missiondebrief.cpp	(working copy)
@@ -1694,7 +1696,7 @@
 			break;
 
 		case TEXT_SCROLL_DOWN:
-			if (Max_debrief_Lines < Num_text_lines) {
+			if (Max_debrief_Lines < (Num_text_lines - Text_offset)) {
 				Text_offset++;
 				gamesnd_play_iface(SND_SCROLL);
 			} else {
@@ -2555,16 +2557,12 @@
 			break;
 	} // end switch
 
-	if (gr_screen.res == 1) {
-		Max_debrief_Lines = 450/gr_get_font_height(); //Make the max number of lines dependent on the font height. 225 and 85 are magic numbers, based on the window size in retail. 
-	} else {
-		Max_debrief_Lines = 340/gr_get_font_height();
-	}
+	Max_debrief_Lines = Debrief_text_wnd_coords[gr_screen.res][3]/gr_get_font_height(); //Make the max number of lines dependent on the font height.
 
-	if (Max_debrief_Lines < Num_text_lines) {
+	if ( (Max_debrief_Lines + Text_offset) < Num_text_lines ) {
 		int w;
 
-		gr_set_color_fast(&Color_red);
+		gr_set_color_fast(&Color_more_indicator);
 		gr_get_string_size(&w, NULL, XSTR( "More", 459));
 		gr_printf_menu(Debrief_text_wnd_coords[gr_screen.res][0] + Debrief_text_wnd_coords[gr_screen.res][2] / 2 - w / 2, Debrief_text_wnd_coords[gr_screen.res][1] + Debrief_text_wnd_coords[gr_screen.res][3], XSTR( "More", 459));
 	}
