diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
index 0232514ef548e891017e5ba76ed1013b071789ec..f8e50dd8570af2ceaf394acb20108149ea0a2d91 100644
--- a/indra/newview/lldynamictexture.cpp
+++ b/indra/newview/lldynamictexture.cpp
@@ -189,7 +189,7 @@ BOOL LLViewerDynamicTexture::updateAllInstances()
 		return TRUE;
 	}
 
-    LLRenderTarget& bake_target = gPipeline.mAuxillaryRT.deferredScreen;
+    LLRenderTarget& bake_target = gPipeline.mBake;
 
 	if (!bake_target.isComplete())
     {
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 9481e9a9b2a7415dfd03fd6a064d29e87a4b7524..fae60b8f17707d3f4d247e833a1cf07532f9e013 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -217,7 +217,7 @@ S32 LLPipeline::RenderBufferVisualization;
 F32 LLPipeline::RenderNormalMapScale;
 LLTrace::EventStatHandle<S64> LLPipeline::sStatBatchSize("renderbatchsize");
 
-const U32 LLPipeline::MAX_BAKE_WIDTH = 512;
+const U32 LLPipeline::MAX_BAKE_WIDTH = 1024;
 
 const F32 BACKLIGHT_DAY_MAGNITUDE_OBJECT = 0.1f;
 const F32 BACKLIGHT_NIGHT_MAGNITUDE_OBJECT = 0.08f;
@@ -1173,6 +1173,7 @@ void LLPipeline::releaseGLBuffers()
 	releaseLUTBuffers();
 
 	mWaterDis.release();
+    mBake.release();
 	
     mSceneMap.release();
 
@@ -1252,6 +1253,9 @@ void LLPipeline::createGLBuffers()
     stop_glerror();
 	assertInitialized();
 
+    // Use FBO for bake tex
+    mBake.allocate(1024, 1024, GL_RGBA, true); // SL-12781 Build > Upload > Model; 3D Preview
+
 	stop_glerror();
 
 	GLuint resX = gViewerWindow->getWorldViewWidthRaw();
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index c3cc62965c5c615eff7edf5dd9fd2b14c7755d57..f56a387262153106cdc76978ea539866b4b21678 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -739,6 +739,7 @@ class LLPipeline
 	LLRenderTarget				mWaterDis;
 
     static const U32 MAX_BAKE_WIDTH;
+	LLRenderTarget				mBake;
 
 	//texture for making the glow
 	LLRenderTarget				mGlow[3];