diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 8c81f2778495e12a2a6fd3e7e7a329a407c981a1..f20a5c37b4fe050552a33564e5136c2b8d1ff238 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -3253,7 +3253,7 @@ void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components,
 		{
 			F32 area = sculptGetSurfaceArea();
 
-			const F32 SCULPT_MAX_AREA = 32.f;
+			const F32 SCULPT_MAX_AREA = 384.f;
 
 			if (area < SCULPT_MIN_AREA || area > SCULPT_MAX_AREA)
 			{
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index 6a3f1865316fc5992809049e348e91b242e60c94..1d82dda30f6b4e3b289a15c8bd108c7885184613 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -294,7 +294,7 @@ bool LLTexUnit::bind(LLImageGL* texture, bool for_rendering, bool forceBind)
 		glBindTexture(sGLTextureType[texture->getTarget()], mCurrTexture);
 		texture->updateBindStats(texture->mTextureMemory);		
 		mHasMipMaps = texture->mHasMipMaps;
-		if (mIndex == 0 && texture->mTexOptionsDirty)
+		if (texture->mTexOptionsDirty)
 		{
 			texture->mTexOptionsDirty = false;
 			setTextureAddressMode(texture->mAddressMode);
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 5e4d5319ec84549e8343faeb625830c187d96dfd..ad7e3ad59352c33b4cb4db805e24ddad83aca306 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -295,16 +295,24 @@ void LLDrawPoolAlpha::render(S32 pass)
 
 	if (sShowDebugAlpha)
 	{
-		if(gPipeline.canUseWindLightShaders()) 
+		BOOL shaders = gPipeline.canUseVertexShaders();
+		if(shaders) 
 		{
-			LLGLSLShader::bindNoShader();
+			gObjectFullbrightNonIndexedProgram.bind();
+		}
+		else
+		{
+			gPipeline.enableLightsFullbright(LLColor4(1,1,1,1));
 		}
-		gPipeline.enableLightsFullbright(LLColor4(1,1,1,1));
 		glColor4f(1,0,0,1);
 		LLViewerFetchedTexture::sSmokeImagep->addTextureStats(1024.f*1024.f);
 		gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sSmokeImagep, TRUE) ;
 		renderAlphaHighlight(LLVertexBuffer::MAP_VERTEX |
 							LLVertexBuffer::MAP_TEXCOORD0);
+		if(shaders) 
+		{
+			gObjectFullbrightNonIndexedProgram.unbind();
+		}
 	}
 }
 
diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp
index 84eeace9c6d8b309b3a70e914298e85f7d4b89ef..3daa0f8261f808ad247960da29ce766f83a3f5d2 100644
--- a/indra/newview/lldrawpoolterrain.cpp
+++ b/indra/newview/lldrawpoolterrain.cpp
@@ -143,7 +143,7 @@ void LLDrawPoolTerrain::beginRenderPass( S32 pass )
 void LLDrawPoolTerrain::endRenderPass( S32 pass )
 {
 	LLFastTimer t(FTM_RENDER_TERRAIN);
-	LLFacePool::endRenderPass(pass);
+	//LLFacePool::endRenderPass(pass);
 
 	if (mVertexShaderLevel > 1 && sShader->mShaderLevel > 0) {
 		sShader->unbind();
@@ -215,8 +215,10 @@ void LLDrawPoolTerrain::render(S32 pass)
 		{ //use fullbright shader for highlighting
 			LLGLSLShader* old_shader = sShader;
 			sShader->unbind();
-			sShader = &gObjectFullbrightProgram;
+			sShader = &gObjectFullbrightNonIndexedProgram;
 			sShader->bind();
+			LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL);
+			glPolygonOffset(-1.0f, -1.0f);
 			renderOwnership();
 			sShader = old_shader;
 			sShader->bind();