diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp
index 95502f47c3508ba051ded132e8b5ff8572cbb541..a6f0d06e7d27b57c488650728a4ed461fda0f05f 100644
--- a/indra/llinventory/llsettingssky.cpp
+++ b/indra/llinventory/llsettingssky.cpp
@@ -364,7 +364,9 @@ LLSettingsSky::LLSettingsSky(const LLSD &data) :
     LLSettingsBase(data),
     mNextSunTextureId(),
     mNextMoonTextureId(),
-    mNextCloudTextureId()
+    mNextCloudTextureId(),
+    mPositionsDirty(true),
+    mLightingDirty(true)
 {
 }
 
@@ -372,13 +374,15 @@ LLSettingsSky::LLSettingsSky():
     LLSettingsBase(),
     mNextSunTextureId(),
     mNextMoonTextureId(),
-    mNextCloudTextureId()
+    mNextCloudTextureId(),
+    mPositionsDirty(true),
+    mLightingDirty(true)
 {
 }
 
 void LLSettingsSky::blend(const LLSettingsBase::ptr_t &end, F64 blendf) 
 {
-    LLSettingsSky::ptr_t other((LLSettingsSky*)end.get());
+    LLSettingsSky::ptr_t other = PTR_NAMESPACE::dynamic_pointer_cast<LLSettingsSky>(end);
     LLSD blenddata = interpolateSDMap(mSettings, other->mSettings, blendf);
 
     replaceSettings(blenddata);