Index: darkplaces/cl_screen.c
diff -u darkplaces/cl_screen.c:1.161 darkplaces/cl_screen.c:1.162
--- darkplaces/cl_screen.c:1.161	Thu Nov 30 18:51:51 2006
+++ darkplaces/cl_screen.c	Tue Dec 12 01:28:54 2006
@@ -461,7 +461,7 @@
 
 	Host_StartVideo();
 	S_StopAllSounds();
-	SCR_UpdateLoadingScreen();
+	SCR_UpdateLoadingScreen(false);
 }
 
 //=============================================================================
@@ -1600,7 +1600,7 @@
 		R_TimeReport("meshfinish");
 }
 
-void SCR_UpdateLoadingScreen (void)
+void SCR_UpdateLoadingScreen (qboolean clear)
 {
 	float x, y;
 	cachepic_t *pic;
@@ -1614,8 +1614,12 @@
 	//qglDisable(GL_SCISSOR_TEST);CHECKGLERROR
 	//qglDepthMask(1);CHECKGLERROR
 	qglColorMask(1,1,1,1);CHECKGLERROR
-	//qglClearColor(0,0,0,0);CHECKGLERROR
-	//qglClear(GL_COLOR_BUFFER_BIT);CHECKGLERROR
+	qglClearColor(0,0,0,0);CHECKGLERROR
+	// when starting up a new video mode, make sure the screen is cleared to black
+	if (clear)
+	{
+		qglClear(GL_COLOR_BUFFER_BIT);CHECKGLERROR
+	}
 	//qglDisable(GL_CULL_FACE);CHECKGLERROR
 	//R_ClearScreen();
 	R_Textures_Frame();
@@ -1645,19 +1649,20 @@
 	texcoord2f[6] = 0;texcoord2f[7] = 1;
 	if (vid.stereobuffer)
 	{
-		qglDrawBuffer(GL_BACK_LEFT);
+		qglDrawBuffer(GL_FRONT_LEFT);
 		R_Mesh_Draw(0, 4, 2, polygonelements);
-		qglDrawBuffer(GL_BACK_RIGHT);
+		qglDrawBuffer(GL_FRONT_RIGHT);
 		R_Mesh_Draw(0, 4, 2, polygonelements);
 	}
 	else
 	{
-		qglDrawBuffer(GL_BACK);
+		qglDrawBuffer(GL_FRONT);
 		R_Mesh_Draw(0, 4, 2, polygonelements);
 	}
 	R_Mesh_Finish();
 	// refresh
-	VID_Finish(false);
+	// not necessary when rendering to GL_FRONT buffers
+	//VID_Finish(false);
 }
 
 void CL_UpdateScreen(void)
Index: darkplaces/gl_backend.h
diff -u darkplaces/gl_backend.h:1.79 darkplaces/gl_backend.h:1.80
--- darkplaces/gl_backend.h:1.79	Thu Nov 23 14:35:52 2006
+++ darkplaces/gl_backend.h	Tue Dec 12 01:28:54 2006
@@ -105,7 +105,7 @@
 // invoke refresh of frame
 void SCR_UpdateScreen(void);
 // invoke refresh of loading plaque (nothing else seen)
-void SCR_UpdateLoadingScreen(void);
+void SCR_UpdateLoadingScreen(qboolean clear);
 
 #endif
 
Index: darkplaces/gl_draw.c
diff -u darkplaces/gl_draw.c:1.135 darkplaces/gl_draw.c:1.136
--- darkplaces/gl_draw.c:1.135	Thu Nov 23 14:35:52 2006
+++ darkplaces/gl_draw.c	Tue Dec 12 01:28:54 2006
@@ -511,6 +511,9 @@
 	char_texture = Draw_CachePic("gfx/conchars", true)->tex;
 	for (i = 1;i <= NUMCROSSHAIRS;i++)
 		r_crosshairs[i] = Draw_CachePic(va("gfx/crosshair%i", i), true);
+
+	// draw the loading screen so people have something to see in the newly opened window
+	SCR_UpdateLoadingScreen(true);
 }
 
 static void gl_draw_shutdown(void)
Index: darkplaces/gl_rmain.c
diff -u darkplaces/gl_rmain.c:1.309 darkplaces/gl_rmain.c:1.310
--- darkplaces/gl_rmain.c:1.309	Wed Dec  6 08:12:57 2006
+++ darkplaces/gl_rmain.c	Tue Dec 12 01:28:54 2006
@@ -1050,8 +1050,8 @@
 {
 	gl_backend_init();
 	R_Textures_Init();
-	GL_Main_Init();
 	GL_Draw_Init();
+	GL_Main_Init();
 	R_Shadow_Init();
 	R_Sky_Init();
 	GL_Surf_Init();