diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
index bcb3b7d4e17e36c11ee903f9d3eaf644a8f7649f..c4c88d304c09bf5e841f880f66de9d805a67b55d 100644
--- a/indra/newview/lldrawpoolbump.cpp
+++ b/indra/newview/lldrawpoolbump.cpp
@@ -41,6 +41,7 @@
 #include "lldrawable.h"
 #include "llface.h"
 #include "llsky.h"
+#include "llstartup.h"
 #include "lltextureentry.h"
 #include "llviewercamera.h"
 #include "llviewertexturelist.h"
@@ -89,6 +90,7 @@ void LLStandardBumpmap::shutdown()
 // static 
 void LLStandardBumpmap::restoreGL()
 {
+    addstandard();
 }
 
 // static
@@ -101,6 +103,12 @@ void LLStandardBumpmap::addstandard()
 		return ;
 	}
 
+    if (LLStartUp::getStartupState() < STATE_SEED_CAP_GRANTED)
+    {
+        // Not ready, need caps for images
+        return;
+    }
+
 	// can't assert; we destroyGL and restoreGL a lot during *first* startup, which populates this list already, THEN we explicitly init the list as part of *normal* startup.  Sigh.  So clear the list every time before we (re-)add the standard bumpmaps.
 	//llassert( LLStandardBumpmap::sStandardBumpmapCount == 0 );
 	clear();