diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 5f5f7878528bc3b9d232b29c1a0c47cd45404cec..0ed3f9e52ba6f181f4122bf4a904396b5dcf52d7 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -1286,7 +1286,7 @@ void LLPipeline::releaseGLBuffers()
     mBake.release();
 	mHighlight.release();
 	
-	for (U32 i = 0; i < 3; i++)
+	for (U32 i = 0; i < 2; i++)
 	{
 		mGlow[i].release();
 	}
@@ -1367,9 +1367,16 @@ void LLPipeline::createGLBuffers()
 
     // allocate screen space glow buffers
     const U32 glow_res = llmax(1, llmin(512, 1 << gSavedSettings.getS32("RenderGlowResolutionPow")));
-    for (U32 i = 0; i < 3; i++)
+    glClearColor(0,0,0,0);
+    gGL.setColorMask(true, true);
+    for (U32 i = 0; i < 2; i++)
     {
-        mGlow[i].allocate(512, glow_res, GL_RGBA, FALSE, FALSE);
+        if(mGlow[i].allocate(512,glow_res,GL_RGBA,FALSE,FALSE))
+        {
+            mGlow[i].bindTarget();
+            mGlow[i].clear();
+            mGlow[i].flush();
+        }
     }
 
     allocateScreenBuffer(resX, resY);
@@ -7708,8 +7715,8 @@ void LLPipeline::renderFinalize()
     {
         {
             LL_RECORD_BLOCK_TIME(FTM_RENDER_BLOOM_FBO);
-            mGlow[2].bindTarget();
-            mGlow[2].clear();
+            mGlow[1].bindTarget();
+            mGlow[1].clear();
         }
 
         gGlowExtractProgram.bind();
@@ -7751,7 +7758,7 @@ void LLPipeline::renderFinalize()
 
             gGL.getTexUnit(0)->unbind(mScreen.getUsage());
 
-            mGlow[2].flush();
+            mGlow[1].flush();
 
             tc1.setVec(0, 0);
             tc2.setVec(2, 2); 
@@ -7782,14 +7789,7 @@ void LLPipeline::renderFinalize()
                 mGlow[i % 2].clear();
             }
 
-            if (i == 0)
-            {
-                gGL.getTexUnit(0)->bind(&mGlow[2]);
-            }
-            else
-            {
-                gGL.getTexUnit(0)->bind(&mGlow[(i - 1) % 2]);
-            }
+            gGL.getTexUnit(0)->bind(&mGlow[(i+1)%2]);
 
             if (i % 2 == 0)
             {
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 22fa0c4812041ad9377c18e17a46403a9c0091a3..7541fc64f6a9692e8dfc4ed5b54357251c0319af 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -672,7 +672,7 @@ class LLPipeline
     LLRenderTarget				mBake;
 
 	//texture for making the glow
-	LLRenderTarget				mGlow[3];
+	LLRenderTarget				mGlow[2];
 
 	//noise map
 	U32					mNoiseMap;