diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
index 48b07bcf51a6a4ffe881bea7cc64409cf59df3de..a460a4f61840e81a8abc331f7e188a67186e9f25 100644
--- a/indra/newview/lldynamictexture.cpp
+++ b/indra/newview/lldynamictexture.cpp
@@ -167,10 +167,14 @@ void LLViewerDynamicTexture::postRender(BOOL success)
 			{
 				generateGLTexture() ;
 			}
-			if(!mGLTexturep->getHasGLTexture())
+			else if(!mGLTexturep->getHasGLTexture())
 			{
 				generateGLTexture() ;
 			}			
+			else if(mGLTexturep->getDiscardLevel() != 0)//do not know how it happens, but regenerate one if it does.
+			{
+				generateGLTexture() ;
+			}
 
 			if(gGLManager.mDebugGPU)
 			{