diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 9933713911b47efd97330da0db328fcddc742bf4..7739feb41905725847699640877c0eb9b49be494 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -235,6 +235,7 @@ set(viewer_SOURCE_FILES
     llfloaterdeleteprefpreset.cpp
     llfloaterdestinations.cpp
     llfloatereditextdaycycle.cpp
+    llfloaterenvironmentadjust.cpp
     llfloaterevent.cpp
     llfloaterexperiencepicker.cpp
     llfloaterexperienceprofile.cpp
@@ -858,6 +859,7 @@ set(viewer_HEADER_FILES
     llfloaterdeleteprefpreset.h
     llfloaterdestinations.h
     llfloatereditextdaycycle.h
+    llfloaterenvironmentadjust.h
     llfloaterevent.h
     llfloaterexperiencepicker.h
     llfloaterexperienceprofile.h
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp
index 3defe68a0ec1cb3c0c69f6d7c91fcaf11713be90..57e6ab715990a3c0a4f666619926eaf8f8de400c 100644
--- a/indra/newview/llenvironment.cpp
+++ b/indra/newview/llenvironment.cpp
@@ -798,6 +798,11 @@ const S32 LLEnvironment::VERSION_CLEANUP(-4); // for cleanups
 
 const F32 LLEnvironment::SUN_DELTA_YAW(F_PI);   // 180deg 
 
+
+const U32 LLEnvironment::DayInstance::NO_ANIMATE_SKY(0x01);
+const U32 LLEnvironment::DayInstance::NO_ANIMATE_WATER(0x02);
+
+
 //-------------------------------------------------------------------------
 LLEnvironment::LLEnvironment():
     mCloudScrollDelta(),
@@ -1110,28 +1115,28 @@ void LLEnvironment::setEnvironment(LLEnvironment::EnvSelection_t env, LLEnvironm
 
     DayInstance::ptr_t environment = getEnvironmentInstance(env, true);
 
-//     LLSettingsSky::ptr_t prev_sky = mEnvironments[ENV_DEFAULT]->getSky();
-//     LLSettingsWater::ptr_t prev_water = mEnvironments[ENV_DEFAULT]->getWater();
-//     if (mCurrentEnvironment && (ENV_EDIT == env))
-//     {
-//         prev_sky = mCurrentEnvironment->getSky() ? mCurrentEnvironment->getSky() : prev_sky;
-//         prev_water = mCurrentEnvironment->getWater() ? mCurrentEnvironment->getWater() : prev_water;
-//     }
 
-//     environment->clear();
-//     environment->setSky((fixed.first) ? fixed.first : prev_sky);
-//     environment->setWater((fixed.second) ? fixed.second : prev_water);
     if (fixed.first)
+    {
         environment->setSky(fixed.first);
+        environment->setFlags(DayInstance::NO_ANIMATE_SKY);
+    }
     else if (!environment->getSky())
+    {
         environment->setSky(mCurrentEnvironment->getSky());
+        environment->setFlags(DayInstance::NO_ANIMATE_SKY);
+    }
         
     if (fixed.second)
+    {
         environment->setWater(fixed.second);
+        environment->setFlags(DayInstance::NO_ANIMATE_WATER);
+    }
     else if (!environment->getWater())
+    {
         environment->setWater(mCurrentEnvironment->getWater());
-        
-
+        environment->setFlags(DayInstance::NO_ANIMATE_WATER);
+    }
 
     if (!mSignalEnvChanged.empty())
         mSignalEnvChanged(env, env_version);
@@ -2447,7 +2452,8 @@ LLEnvironment::DayInstance::DayInstance(EnvSelection_t env) :
     mInitialized(false),
     mType(TYPE_INVALID),
     mSkyTrack(1),
-    mEnv(env)
+    mEnv(env),
+    mAnimateFlags(0)
 { }
 
 
@@ -2465,6 +2471,7 @@ LLEnvironment::DayInstance::ptr_t LLEnvironment::DayInstance::clone() const
     environment->mInitialized = mInitialized;
     environment->mType = mType;
     environment->mSkyTrack = mSkyTrack;
+    environment->mAnimateFlags = mAnimateFlags;
 
     return environment;
 }
@@ -2489,6 +2496,8 @@ void LLEnvironment::DayInstance::setDay(const LLSettingsDay::ptr_t &pday, LLSett
     mType = TYPE_CYCLED;
     mInitialized = false;
 
+    mAnimateFlags = 0;
+
     mDayCycle = pday;
     mDayLength = daylength;
     mDayOffset = dayoffset;
@@ -2596,34 +2605,40 @@ void LLEnvironment::DayInstance::animate()
     if (!mDayCycle)
         return;
 
-    LLSettingsDay::CycleTrack_t &wtrack = mDayCycle->getCycleTrack(0);
-
-    if (wtrack.empty())
+    if (!(mAnimateFlags & NO_ANIMATE_WATER))
     {
-        mWater.reset();
-        mBlenderWater.reset();
-    }
-    else
-    {
-        mWater = LLSettingsVOWater::buildDefaultWater();
-        mBlenderWater = std::make_shared<LLTrackBlenderLoopingTime>(mWater, mDayCycle, 0, 
-            mDayLength, mDayOffset, DEFAULT_UPDATE_THRESHOLD);
-    }
-
-    // sky, initialize to track 1
-    LLSettingsDay::CycleTrack_t &track = mDayCycle->getCycleTrack(1);
+        LLSettingsDay::CycleTrack_t &wtrack = mDayCycle->getCycleTrack(0);
 
-    if (track.empty())
-    {
-        mSky.reset();
-        mBlenderSky.reset();
+        if (wtrack.empty())
+        {
+            mWater.reset();
+            mBlenderWater.reset();
+        }
+        else
+        {
+            mWater = LLSettingsVOWater::buildDefaultWater();
+            mBlenderWater = std::make_shared<LLTrackBlenderLoopingTime>(mWater, mDayCycle, 0,
+                mDayLength, mDayOffset, DEFAULT_UPDATE_THRESHOLD);
+        }
     }
-    else
+
+    if (!(mAnimateFlags & NO_ANIMATE_SKY))
     {
-        mSky = LLSettingsVOSky::buildDefaultSky();
-        mBlenderSky = std::make_shared<LLTrackBlenderLoopingTime>(mSky, mDayCycle, 1, 
-            mDayLength, mDayOffset, DEFAULT_UPDATE_THRESHOLD);
-        mBlenderSky->switchTrack(mSkyTrack, 0.0);
+        // sky, initialize to track 1
+        LLSettingsDay::CycleTrack_t &track = mDayCycle->getCycleTrack(1);
+
+        if (track.empty())
+        {
+            mSky.reset();
+            mBlenderSky.reset();
+        }
+        else
+        {
+            mSky = LLSettingsVOSky::buildDefaultSky();
+            mBlenderSky = std::make_shared<LLTrackBlenderLoopingTime>(mSky, mDayCycle, 1,
+                mDayLength, mDayOffset, DEFAULT_UPDATE_THRESHOLD);
+            mBlenderSky->switchTrack(mSkyTrack, 0.0);
+        }
     }
 }
 
diff --git a/indra/newview/llenvironment.h b/indra/newview/llenvironment.h
index 64350c42e825b26f1f883770ea6d8468a4599a1d..327e34d8566a6f6e338901a69f0e120aaeb3bf34 100644
--- a/indra/newview/llenvironment.h
+++ b/indra/newview/llenvironment.h
@@ -235,8 +235,12 @@ class LLEnvironment : public LLSingleton<LLEnvironment>
             TYPE_FIXED,
             TYPE_CYCLED
         };
+
         typedef std::shared_ptr<DayInstance> ptr_t;
 
+        static const U32                NO_ANIMATE_SKY;
+        static const U32                NO_ANIMATE_WATER;
+
                                         DayInstance(EnvSelection_t env);
         virtual                         ~DayInstance() { };
 
@@ -273,7 +277,12 @@ class LLEnvironment : public LLSingleton<LLEnvironment>
 
         LLSettingsBase::TrackPosition   getProgress() const;
 
+        void                            setFlags(U32 flag) { mAnimateFlags |= flag; }
+        void                            clearFlags(U32 flag) { mAnimateFlags &= ~flag; }
+
     protected:
+
+
         LLSettingsDay::ptr_t        mDayCycle;
         LLSettingsSky::ptr_t        mSky;
         LLSettingsWater::ptr_t      mWater;
@@ -291,6 +300,8 @@ class LLEnvironment : public LLSingleton<LLEnvironment>
 
         EnvSelection_t              mEnv;
 
+        U32                         mAnimateFlags;
+
         LLSettingsBase::TrackPosition secondsToKeyframe(LLSettingsDay::Seconds seconds);
     };
 
diff --git a/indra/newview/llfloaterenvironmentadjust.cpp b/indra/newview/llfloaterenvironmentadjust.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9456780627f6c3fe3ffd4a6a92a8aaff2d3df4d1
--- /dev/null
+++ b/indra/newview/llfloaterenvironmentadjust.cpp
@@ -0,0 +1,329 @@
+/** 
+ * @file llfloaterfixedenvironment.cpp
+ * @brief Floaters to create and edit fixed settings for sky and water.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterenvironmentadjust.h"
+
+#include "llslider.h"
+#include "llsliderctrl.h"
+#include "llcolorswatch.h"
+#include "llvirtualtrackball.h"
+#include "llenvironment.h"
+
+//=========================================================================
+namespace
+{
+    const std::string FIELD_SKY_AMBIENT_LIGHT("ambient_light");
+    const std::string FIELD_SKY_BLUE_HORIZON("blue_horizon");
+    const std::string FIELD_SKY_BLUE_DENSITY("blue_density");
+    const std::string FIELD_SKY_SUN_COLOR("sun_color");
+    const std::string FIELD_SKY_CLOUD_COLOR("cloud_color");
+    const std::string FIELD_SKY_HAZE_HORIZON("haze_horizon");
+    const std::string FIELD_SKY_HAZE_DENSITY("haze_density");
+    const std::string FIELD_SKY_CLOUD_COVERAGE("cloud_coverage");
+    const std::string FIELD_SKY_CLOUD_SCALE("cloud_scale");
+    const std::string FIELD_SKY_SCENE_GAMMA("scene_gamma");
+    const std::string FIELD_SKY_SUN_ROTATION("sun_rotation");
+    const std::string FIELD_SKY_SUN_SCALE("sun_scale");
+    const std::string FIELD_SKY_GLOW_FOCUS("glow_focus");
+    const std::string FIELD_SKY_GLOW_SIZE("glow_size");
+    const std::string FIELD_SKY_STAR_BRIGHTNESS("star_brightness");
+    const std::string FIELD_SKY_MOON_ROTATION("moon_rotation");
+
+    const F32 SLIDER_SCALE_SUN_AMBIENT(3.0f);
+    const F32 SLIDER_SCALE_BLUE_HORIZON_DENSITY(2.0f);
+    const F32 SLIDER_SCALE_GLOW_R(20.0f);
+    const F32 SLIDER_SCALE_GLOW_B(-5.0f);
+    const F32 SLIDER_SCALE_DENSITY_MULTIPLIER(0.001f);
+
+    const S32 FLOATER_ENVIRONMENT_UPDATE(-2);
+}
+
+//=========================================================================
+LLFloaterEnvironmentAdjust::LLFloaterEnvironmentAdjust(const LLSD &key):
+    LLFloater(key)
+{}
+
+LLFloaterEnvironmentAdjust::~LLFloaterEnvironmentAdjust()
+{}
+
+//-------------------------------------------------------------------------
+BOOL LLFloaterEnvironmentAdjust::postBuild()
+{
+    getChild<LLUICtrl>(FIELD_SKY_AMBIENT_LIGHT)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onAmbientLightChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_BLUE_HORIZON)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onBlueHorizonChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_BLUE_DENSITY)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onBlueDensityChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_HAZE_HORIZON)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onHazeHorizonChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_HAZE_DENSITY)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onHazeDensityChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_SCENE_GAMMA)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSceneGammaChanged(); });
+
+    getChild<LLUICtrl>(FIELD_SKY_CLOUD_COLOR)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onCloudColorChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_CLOUD_COVERAGE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onCloudCoverageChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_CLOUD_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onCloudScaleChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_SUN_COLOR)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSunColorChanged(); });
+
+    getChild<LLUICtrl>(FIELD_SKY_GLOW_FOCUS)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onGlowChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_GLOW_SIZE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onGlowChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_STAR_BRIGHTNESS)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onStarBrightnessChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_SUN_ROTATION)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSunRotationChanged(); });
+    getChild<LLUICtrl>(FIELD_SKY_SUN_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSunScaleChanged(); });
+
+    getChild<LLUICtrl>(FIELD_SKY_MOON_ROTATION)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMoonRotationChanged(); });
+
+    refresh();
+    return TRUE;
+}
+
+void LLFloaterEnvironmentAdjust::onOpen(const LLSD& key)
+{
+    captureCurrentEnvironment();
+
+    mEventConnection = LLEnvironment::instance().setEnvironmentChanged([this](LLEnvironment::EnvSelection_t env, S32 version){ onEnvironmentUpdated(env, version); });
+
+    LLFloater::onOpen(key);
+    refresh();
+}
+
+void LLFloaterEnvironmentAdjust::onClose(bool app_quitting)
+{
+    mEventConnection.disconnect();
+    mLiveSky.reset();
+    LLFloater::onClose(app_quitting);
+}
+
+
+//-------------------------------------------------------------------------
+void LLFloaterEnvironmentAdjust::refresh()
+{
+    if (!mLiveSky)
+    {
+        setAllChildrenEnabled(FALSE);
+        return;
+    }
+
+    setEnabled(TRUE);
+    setAllChildrenEnabled(TRUE);
+
+    getChild<LLColorSwatchCtrl>(FIELD_SKY_AMBIENT_LIGHT)->set(mLiveSky->getAmbientColor() / SLIDER_SCALE_SUN_AMBIENT);
+    getChild<LLColorSwatchCtrl>(FIELD_SKY_BLUE_HORIZON)->set(mLiveSky->getBlueHorizon() / SLIDER_SCALE_BLUE_HORIZON_DENSITY);
+    getChild<LLColorSwatchCtrl>(FIELD_SKY_BLUE_DENSITY)->set(mLiveSky->getBlueDensity() / SLIDER_SCALE_BLUE_HORIZON_DENSITY);
+    getChild<LLUICtrl>(FIELD_SKY_HAZE_HORIZON)->setValue(mLiveSky->getHazeHorizon());
+    getChild<LLUICtrl>(FIELD_SKY_HAZE_DENSITY)->setValue(mLiveSky->getHazeDensity());
+    getChild<LLUICtrl>(FIELD_SKY_SCENE_GAMMA)->setValue(mLiveSky->getGamma());
+    getChild<LLColorSwatchCtrl>(FIELD_SKY_CLOUD_COLOR)->set(mLiveSky->getCloudColor());
+    getChild<LLUICtrl>(FIELD_SKY_CLOUD_COVERAGE)->setValue(mLiveSky->getCloudShadow());
+    getChild<LLUICtrl>(FIELD_SKY_CLOUD_SCALE)->setValue(mLiveSky->getCloudScale());
+    getChild<LLColorSwatchCtrl>(FIELD_SKY_SUN_COLOR)->set(mLiveSky->getSunlightColor() / SLIDER_SCALE_SUN_AMBIENT);
+
+    LLColor3 glow(mLiveSky->getGlow());
+
+    // takes 40 - 0.2 range -> 0 - 1.99 UI range
+    getChild<LLUICtrl>(FIELD_SKY_GLOW_SIZE)->setValue(2.0 - (glow.mV[0] / SLIDER_SCALE_GLOW_R));
+    getChild<LLUICtrl>(FIELD_SKY_GLOW_FOCUS)->setValue(glow.mV[2] / SLIDER_SCALE_GLOW_B);
+    getChild<LLUICtrl>(FIELD_SKY_STAR_BRIGHTNESS)->setValue(mLiveSky->getStarBrightness());
+    getChild<LLVirtualTrackball>(FIELD_SKY_SUN_ROTATION)->setRotation(mLiveSky->getSunRotation());
+    getChild<LLUICtrl>(FIELD_SKY_SUN_SCALE)->setValue(mLiveSky->getSunScale());
+    getChild<LLVirtualTrackball>(FIELD_SKY_MOON_ROTATION)->setRotation(mLiveSky->getMoonRotation());
+
+}
+
+
+void LLFloaterEnvironmentAdjust::captureCurrentEnvironment()
+{
+    LLEnvironment &environment(LLEnvironment::instance());
+    bool updatelocal(false);
+
+    if (environment.hasEnvironment(LLEnvironment::ENV_LOCAL))
+    {
+        if (environment.getEnvironmentDay(LLEnvironment::ENV_LOCAL))
+        {   // We have a full day cycle in the local environment.  Freeze the sky
+            mLiveSky = environment.getEnvironmentFixedSky(LLEnvironment::ENV_LOCAL)->buildClone();
+            updatelocal = true;
+        }
+        else
+        {   // otherwise we can just use the sky.
+            mLiveSky = environment.getEnvironmentFixedSky(LLEnvironment::ENV_LOCAL);
+        }
+    }
+    else
+    {
+        mLiveSky = environment.getEnvironmentFixedSky(LLEnvironment::ENV_PARCEL, true)->buildClone();
+        updatelocal = true;
+    }
+
+    if (updatelocal)
+    {
+        environment.setEnvironment(LLEnvironment::ENV_LOCAL, mLiveSky, FLOATER_ENVIRONMENT_UPDATE);
+    }
+    environment.setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
+    environment.updateEnvironment(LLEnvironment::TRANSITION_INSTANT);
+
+}
+
+//-------------------------------------------------------------------------
+void LLFloaterEnvironmentAdjust::onAmbientLightChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setAmbientColor(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_AMBIENT_LIGHT)->get() * SLIDER_SCALE_SUN_AMBIENT));
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onBlueHorizonChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setBlueHorizon(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_BLUE_HORIZON)->get() * SLIDER_SCALE_BLUE_HORIZON_DENSITY));
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onBlueDensityChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setBlueDensity(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_BLUE_DENSITY)->get() * SLIDER_SCALE_BLUE_HORIZON_DENSITY));
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onHazeHorizonChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setHazeHorizon(getChild<LLUICtrl>(FIELD_SKY_HAZE_HORIZON)->getValue().asReal());
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onHazeDensityChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setHazeDensity(getChild<LLUICtrl>(FIELD_SKY_HAZE_DENSITY)->getValue().asReal());
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onSceneGammaChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setGamma(getChild<LLUICtrl>(FIELD_SKY_SCENE_GAMMA)->getValue().asReal());
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onCloudColorChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setCloudColor(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_CLOUD_COLOR)->get()));
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onCloudCoverageChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setCloudShadow(getChild<LLUICtrl>(FIELD_SKY_CLOUD_COVERAGE)->getValue().asReal());
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onCloudScaleChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setCloudScale(getChild<LLUICtrl>(FIELD_SKY_CLOUD_SCALE)->getValue().asReal());
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onGlowChanged()
+{
+    if (!mLiveSky)
+        return;
+    LLColor3 glow(getChild<LLUICtrl>(FIELD_SKY_GLOW_SIZE)->getValue().asReal(), 0.0f, getChild<LLUICtrl>(FIELD_SKY_GLOW_FOCUS)->getValue().asReal());
+
+    // takes 0 - 1.99 UI range -> 40 -> 0.2 range
+    glow.mV[0] = (2.0f - glow.mV[0]) * SLIDER_SCALE_GLOW_R;
+    glow.mV[2] *= SLIDER_SCALE_GLOW_B;
+
+    mLiveSky->setGlow(glow);
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onStarBrightnessChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setStarBrightness(getChild<LLUICtrl>(FIELD_SKY_STAR_BRIGHTNESS)->getValue().asReal());
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onSunRotationChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setSunRotation(getChild<LLVirtualTrackball>(FIELD_SKY_SUN_ROTATION)->getRotation());
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onSunScaleChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setSunScale((getChild<LLUICtrl>(FIELD_SKY_SUN_SCALE)->getValue().asReal()));
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onMoonRotationChanged()
+{
+    if (!mLiveSky)
+        return;
+    mLiveSky->setMoonRotation(getChild<LLVirtualTrackball>(FIELD_SKY_MOON_ROTATION)->getRotation());
+    mLiveSky->update();
+}
+
+void LLFloaterEnvironmentAdjust::onSunColorChanged()
+{
+    if (!mLiveSky)
+        return;
+    LLColor3 color(getChild<LLColorSwatchCtrl>(FIELD_SKY_SUN_COLOR)->get());
+
+    color *= SLIDER_SCALE_SUN_AMBIENT;
+
+    mLiveSky->setSunlightColor(color);
+    mLiveSky->update();
+}
+
+
+void LLFloaterEnvironmentAdjust::onEnvironmentUpdated(LLEnvironment::EnvSelection_t env, S32 version)
+{
+    if (env == LLEnvironment::ENV_LOCAL)
+    {   // a new local environment has been applied
+        if (version != FLOATER_ENVIRONMENT_UPDATE)
+        {   // not by this floater
+            captureCurrentEnvironment();
+            refresh();
+        }
+    }
+}
diff --git a/indra/newview/llfloaterenvironmentadjust.h b/indra/newview/llfloaterenvironmentadjust.h
new file mode 100644
index 0000000000000000000000000000000000000000..5bd91b0c436f204419efaf971164b9000084e22b
--- /dev/null
+++ b/indra/newview/llfloaterenvironmentadjust.h
@@ -0,0 +1,86 @@
+/** 
+ * @file llfloaterenvironmentadjust.h
+ * @brief Floaters to create and edit fixed settings for sky and water.
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_FLOATERENVIRONMENTADJUST_H
+#define LL_FLOATERENVIRONMENTADJUST_H
+
+#include "llfloater.h"
+#include "llsettingsbase.h"
+#include "llsettingssky.h"
+#include "llenvironment.h"
+
+#include "boost/signals2.hpp"
+
+class LLButton;
+class LLLineEditor;
+
+/**
+ * Floater container for taking a snapshot of the current environment and making minor adjustments.
+ */
+class LLFloaterEnvironmentAdjust : public LLFloater
+{
+    LOG_CLASS(LLFloaterEnvironmentAdjust);
+
+public:
+                                LLFloaterEnvironmentAdjust(const LLSD &key);
+    virtual                     ~LLFloaterEnvironmentAdjust();
+
+
+    virtual BOOL                postBuild() override;
+    virtual void                onOpen(const LLSD& key) override;
+    virtual void                onClose(bool app_quitting) override;
+
+    virtual void                refresh() override;
+
+private:
+    void                        captureCurrentEnvironment();
+
+    void                        onAmbientLightChanged();
+    void                        onBlueHorizonChanged();
+    void                        onBlueDensityChanged();
+    void                        onHazeHorizonChanged();
+    void                        onHazeDensityChanged();
+    void                        onSceneGammaChanged();
+
+    void                        onCloudColorChanged();
+    void                        onCloudCoverageChanged();
+    void                        onCloudScaleChanged();
+    void                        onSunColorChanged();
+
+    void                        onGlowChanged();
+    void                        onStarBrightnessChanged();
+    void                        onSunRotationChanged();
+    void                        onSunScaleChanged();
+
+    void                        onMoonRotationChanged();
+
+    void                        onEnvironmentUpdated(LLEnvironment::EnvSelection_t env, S32 version);
+
+    LLSettingsSky::ptr_t        mLiveSky;
+    LLEnvironment::connection_t mEventConnection;
+};
+
+#endif // LL_FLOATERFIXEDENVIRONMENT_H
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 6ad4ea76af697c0c9126d6949f775f6d8e43b392..756dafe2706b705059d60b671fe11d55a135f1d5 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -58,6 +58,7 @@
 #include "llfloaterdeleteprefpreset.h"
 #include "llfloaterdestinations.h"
 #include "llfloatereditextdaycycle.h"
+#include "llfloaterenvironmentadjust.h"
 #include "llfloaterexperienceprofile.h"
 #include "llfloaterexperiences.h"
 #include "llfloaterexperiencepicker.h"
@@ -222,7 +223,8 @@ void LLViewerFloaterReg::registerFloaters()
 
     LLFloaterReg::add("env_fixed_environmentent_water", "floater_fixedenvironment.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFixedEnvironmentWater>);
     LLFloaterReg::add("env_fixed_environmentent_sky", "floater_fixedenvironment.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFixedEnvironmentSky>);
-    //LLFloaterReg::add("env_fixed_environmentent", "floater_fixedenvironment.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFixedEnvironment>);
+
+    LLFloaterReg::add("env_adjust_snapshot", "floater_adjust_environment.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEnvironmentAdjust>);
 
     LLFloaterReg::add("env_edit_extdaycycle", "floater_edit_ext_day_cycle.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEditExtDayCycle>);
     LLFloaterReg::add("my_environments", "floater_my_environments.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMyEnvironment>);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 68a91968ea56cec607370df7de7e63f92427145c..f03eb485739d4847b4390dbff5a4bb0159ac5c19 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -8542,6 +8542,10 @@ class LLWorldEnvSettings : public view_listener_t
             else
                 LLEnvironment::instance().pauseCloudScroll();
         }
+        else if (event_name == "adjust_tool")
+        {
+            LLFloaterReg::showInstance("env_adjust_snapshot");
+        }
         else if (event_name == "my_environs")
         {
             LLFloaterReg::showInstance("my_environments");
diff --git a/indra/newview/skins/default/xui/en/floater_adjust_environment.xml b/indra/newview/skins/default/xui/en/floater_adjust_environment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e2cf809c9c80bca9252f223aab8a2f5340b0c4ea
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_adjust_environment.xml
@@ -0,0 +1,365 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater layout="topleft"
+         name="env_adjust_snapshot"
+         help_topic="day_presets"
+         save_rect="false"
+         title="Personal Lighting"
+         width="845"
+         height="225"
+         min_width="500"
+         min_height="225"
+         single_instance="true"
+         can_resize="false">
+    <layout_stack name="outer_stack"
+                  width="845"
+                  height="212"
+                  follows="all"
+                  animate="false"
+                  top="0"
+                  orientation="vertical">
+        <!-- If I put in a timeline it would go here -->
+        <layout_panel name="env_controls"
+                      border="false"
+                      bevel_style="in"
+                      auto_resize="true"
+                      user_resize="true"
+                      height="150"
+                      min_height="0"
+                      visible="true">
+            <layout_stack name="settings_stack"
+                          width="855"
+                          height="150"
+                          follows="all"
+                          animate="false"
+                          orientation="horizontal">
+                <layout_panel border="false"
+                              bevel_style="in"
+                              auto_resize="false"
+                              user_resize="false"
+                              visible="true"
+                              width="160"
+                              height="150">
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left="10"
+                          top="5"
+                          width="80">Ambient:</text>
+                    <color_swatch can_apply_immediately="true"
+                                  follows="left|top"
+                                  height="37"
+                                  label_height="0"
+                                  layout="topleft"
+                                  left_delta="0"
+                                  name="ambient_light"
+                                  top_pad="5"
+                                  width="60"/>
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_delta="0"
+                          top_pad="10"
+                          width="80">Blue Horizon:</text>
+                    <color_swatch can_apply_immediately="true"
+                                  follows="left|top"
+                                  height="37"
+                                  label_height="0"
+                                  layout="topleft"
+                                  left_delta="0"
+                                  name="blue_horizon"
+                                  top_pad="5"
+                                  width="60"/>
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_delta="0"
+                          top_pad="10"
+                          width="80">Blue Density:</text>
+                    <color_swatch can_apply_immediately="true"
+                                  follows="left|top"
+                                  height="37"
+                                  label_height="0"
+                                  layout="topleft"
+                                  left_delta="0"
+                                  name="blue_density"
+                                  top_pad="5"
+                                  width="60"/>
+                    <text follows="right|top"
+                          height="10"
+                          layout="topleft"
+                          right="-10"
+                          top="5"
+                          width="60">Sun Color:</text>
+                    <color_swatch can_apply_immediately="true"
+                                  follows="left|top"
+                                  height="37"
+                                  label_height="0"
+                                  layout="topleft"
+                                  left_delta="0"
+                                  name="sun_color"
+                                  top_pad="5"
+                                  width="60"/>
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_delta="0"
+                          top_pad="10"
+                          width="80">Cloud Color:</text>
+                    <color_swatch can_apply_immediately="true"
+                                  follows="left|top"
+                                  height="37"
+                                  label_height="0"
+                                  layout="topleft"
+                                  left_delta="0"
+                                  name="cloud_color"
+                                  top_pad="5"
+                                  width="60"/>
+                </layout_panel>
+                <layout_panel border="false"
+                              bevel_style="in"
+                              auto_resize="false"
+                              user_resize="false"
+                              visible="true"
+                              width="200"
+                              height="150">
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_delta="5"
+                          top_pad="5"
+                          width="80">Haze Horizon:</text>
+                    <slider decimal_digits="2"
+                            follows="left|top"
+                            height="16"
+                            increment="0.01"
+                            initial_value="0"
+                            layout="topleft"
+                            left_delta="5"
+                            min_val="0"
+                            max_val="5"
+                            name="haze_horizon"
+                            top_pad="5"
+                            width="185"
+                            can_edit_text="true"/>
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_delta="-5"
+                          top_pad="5"
+                          width="80">Haze Density:</text>
+                    <slider decimal_digits="2"
+                            follows="left|top"
+                            height="16"
+                            increment="0.01"
+                            initial_value="0"
+                            layout="topleft"
+                            left_delta="5"
+                            min_val="0"
+                            max_val="5"
+                            name="haze_density"
+                            top_pad="5"
+                            width="185"
+                            can_edit_text="true"/>
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_delta="-5"
+                          top_pad="5"
+                          width="185">Cloud Coverage:</text>
+                    <slider decimal_digits="2"
+                            follows="left|top"
+                            height="16"
+                            increment="0.01"
+                            initial_value="0"
+                            layout="topleft"
+                            left_delta="5"
+                            min_val="0"
+                            max_val="1"
+                            name="cloud_coverage"
+                            top_pad="5"
+                            width="185"
+                            can_edit_text="true"/>
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_delta="-5"
+                          top_pad="5"
+                          width="185">Cloud Scale:</text>
+                    <slider decimal_digits="2"
+                            follows="left|top"
+                            height="16"
+                            increment="0.01"
+                            initial_value="0"
+                            layout="topleft"
+                            left_delta="5"
+                            min_val="0.01"
+                            max_val="3"
+                            name="cloud_scale"
+                            top_pad="5"
+                            width="185"
+                            can_edit_text="true"/>
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_delta="-5"
+                          top_pad="15"
+                          width="80">Scene Gamma:</text>
+                    <slider decimal_digits="2"
+                            follows="left|top"
+                            height="16"
+                            increment="0.01"
+                            initial_value="0"
+                            layout="topleft"
+                            left_delta="5"
+                            max_val="20"
+                            name="scene_gamma"
+                            top_pad="5"
+                            width="185"
+                            can_edit_text="true"/>
+                </layout_panel>
+                <layout_panel border="false"
+                              bevel_style="in"
+                              auto_resize="false"
+                              user_resize="false"
+                              height="150"
+                              width="310"
+                              min_height="0"
+                              visible="true">
+                    <text follows="top|left"
+                          font="SansSerifBold"
+                          height="10"
+                          layout="topleft"
+                          name="label"
+                          left="5"
+                          top="5"
+                          width="105">Sun:</text>
+                    <sun_moon_trackball name="sun_rotation"
+                                        follows="left|top"
+                                        left_delta="0"
+                                        top_delta="20"
+                                        height="150"
+                                        width="150"
+                                        thumb_mode="sun"/>
+                    <check_box control_name="sunbeacon"
+                               width="60"
+                               height="16"
+                               label="Show Beacon"
+                               layout="topleft"
+                               name="sunbeacon"
+                               left_delta="55"
+                               bottom="-10"
+                               follows="bottom|right"/>
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_pad="40"
+                          top="25"
+                          width="80">Scale:</text>
+                    <slider decimal_digits="2"
+                            follows="left|top"
+                            height="16"
+                            increment="0.01"
+                            initial_value="0"
+                            layout="topleft"
+                            left_delta="5"
+                            min_val="0.25"
+                            max_val="20"
+                            name="sun_scale"
+                            top_delta="15"
+                            width="130"
+                            can_edit_text="true"/>
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_delta="-5"
+                          top_pad="5"
+                          width="100">Glow Focus:</text>
+                    <slider decimal_digits="2"
+                            follows="left|top"
+                            height="16"
+                            increment="0.01"
+                            initial_value="0"
+                            layout="topleft"
+                            left_delta="5"
+                            min_val="-2"
+                            max_val="2"
+                            name="glow_focus"
+                            top_pad="5"
+                            width="130"
+                            can_edit_text="true"/>
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_delta="-5"
+                          top_pad="5"
+                          width="200">Glow Size:</text>
+                    <slider decimal_digits="2"
+                            follows="left|top"
+                            height="16"
+                            increment="0.01"
+                            initial_value="0"
+                            layout="topleft"
+                            left_delta="5"
+                            min_val="0"
+                            max_val="1.99"
+                            name="glow_size"
+                            top_pad="5"
+                            width="130"
+                            can_edit_text="true"/>
+                    <text follows="left|top"
+                          height="10"
+                          layout="topleft"
+                          left_delta="-5"
+                          top_pad="10"
+                          width="200">Star Brightness:</text>
+                    <slider decimal_digits="2"
+                            follows="left|top"
+                            height="16"
+                            increment="0.01"
+                            initial_value="0"
+                            layout="topleft"
+                            left_delta="5"
+                            min_val="0"
+                            max_val="500"
+                            name="star_brightness"
+                            top_pad="5"
+                            width="130"
+                            can_edit_text="true"/>
+                </layout_panel>
+                <layout_panel border="false"
+                              bevel_style="in"
+                              auto_resize="false"
+                              user_resize="false"
+                              height="150"
+                              width="160"
+                              min_height="0"
+                              visible="true">
+                    <text follows="top|left"
+                          font="SansSerifBold"
+                          height="10"
+                          layout="topleft"
+                          name="label"
+                          left="5"
+                          top="5"
+                          width="105">Moon:</text>
+                    <sun_moon_trackball name="moon_rotation"
+                                        follows="left|top"
+                                        left_delta="0"
+                                        top_delta="20"
+                                        height="150"
+                                        width="150"
+                                        thumb_mode="moon"/>
+                    <check_box control_name="moonbeacon"
+                               width="60"
+                               height="16"
+                               label="Show Beacon"
+                               layout="topleft"
+                               name="moonbeacon"
+                               right="-50"
+                               bottom="-10"
+                               follows="bottom|right"/>
+                </layout_panel>
+            </layout_stack>
+        </layout_panel>
+    </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index f676df5e8b331af2a31cd5883c874704a08effb5..2eab312ecd6928b8062bdeb139d304e5bf90913e 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -715,6 +715,13 @@
                  function="World.EnvSettings"
                  parameter="my_environs" />
             </menu_item_call>
+            <menu_item_call
+             label="Personal Lighting..."
+             name="adjustment_tool">
+                <menu_item_call.on_click
+                 function="World.EnvSettings"
+                 parameter="adjust_tool" />
+            </menu_item_call>
             <menu_item_separator/>
             <menu_item_check
              label="Pause Clouds"