diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index d541bb664754df61bb19c1b7ecb6745ecc6216cc..ce57585d821f8ebabe0615c147704a91f256628b 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -2438,7 +2438,19 @@ void LLViewerRegion::setSimulatorFeatures(const LLSD& sim_features)
 	mSimulatorFeatures = sim_features;
 
 	setSimulatorFeaturesReceived(true);
-	
+
+    // if region has MaxTextureResolution, set max_texture_dimension settings, otherwise use default
+    if (mSimulatorFeatures.has("MaxTextureResolution"))
+    {
+        S32 max_texture_resolution = mSimulatorFeatures["MaxTextureResolution"].asInteger();
+        gSavedSettings.setS32("max_texture_dimension_X", max_texture_resolution);
+        gSavedSettings.setS32("max_texture_dimension_Y", max_texture_resolution);
+    }
+    else
+    {
+        gSavedSettings.setS32("max_texture_dimension_X", 1024);
+        gSavedSettings.setS32("max_texture_dimension_Y", 1024);
+    }
 }
 
 //this is called when the parent is not cacheable.