diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index 685334555a454c8a51e32ae809a68d53474c3edd..13e7c6094caebc548c4c00f472b67c811fd7488b 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -1039,6 +1039,7 @@ LLRender::LLRender()
 		mMatIdx[i] = 0;
 		mMatHash[i] = 0;
 		mCurMatHash[i] = 0xFFFFFFFF;
+		mMatrix[i][0].make_identity();
 	}
 
 	mLightHash = 0;
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index b0d97ee5f631569366fed99350ea131b906f55d4..17cce3069e7c12f75d9822e2d65da7eb2de0ef60 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -2122,6 +2122,14 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gObjectBumpProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
 		success = gObjectBumpProgram.createShader(NULL, NULL);
+
+		if (success)
+		{ //lldrawpoolbump assumes "texture0" has channel 0 and "texture1" has channel 1
+			gObjectBumpProgram.bind();
+			gObjectBumpProgram.uniform1i("texture0", 0);
+			gObjectBumpProgram.uniform1i("texture1", 1);
+			gObjectBumpProgram.unbind();
+		}
 	}