 diff -rup linux-3.14.19-orig/arch/x86/boot/video.c linux-3.14.19/arch/x86/boot/video.c
---- linux-3.14.19-orig/arch/x86/boot/video.c	2014-09-17 19:21:23.000000000 +0300
-+++ linux-3.14.19/arch/x86/boot/video.c	2014-09-20 14:11:16.564844745 +0300
-@@ -312,6 +312,40 @@ static void restore_screen(void)
+--- linux-3.14.19-orig/arch/x86/boot/video.c	2014-09-21 20:11:20.662964171 +0300
++++ linux-3.14.19/arch/x86/boot/video.c	2014-09-22 19:22:39.520944994 +0300
+@@ -312,6 +312,39 @@ static void restore_screen(void)
  	store_cursor_position();
  }
  

 void set_video(void)
 {
 	u16 mode = boot_params.hdr.vid_mode;
@@ -322,6 +356,9 @@ void set_video(void)
 	save_screen();
 	probe_cards(0);
 

+				continue; /* Hidden mode */
+
+			unsigned long pixels = mi->x * mi->y;
+			if (pixels > max_pixels) {
+				max_pixels = pixels;
+				max_depth = mi->depth;
+				mode = mode_id;
+			} else if ((pixels == max_pixels) && (mi->depth > max_depth)) {
+				max_depth = mi->depth;
+				mode = mode_id;
+			}
+		}
+	}
