diff --git a/indra/llcommon/lltracerecording.cpp b/indra/llcommon/lltracerecording.cpp
index 875c3710687041cf8b49487b02ce7db08a2c3161..5d43771cb206f451cf7935521930b9c74cb1c866 100644
--- a/indra/llcommon/lltracerecording.cpp
+++ b/indra/llcommon/lltracerecording.cpp
@@ -367,9 +367,6 @@ void PeriodicRecording::appendPeriodicRecording( PeriodicRecording& other )
 
 	if (mAutoResize)
 	{
-		// append first recording into our current slot
-		getCurRecording().appendRecording(other.mRecordingPeriods[other_oldest_recording_index]);
-
 		// push back recordings for everything in the middle
 		U32 other_index = (other_oldest_recording_index + 1) % other_recording_slots;
 		while (other_index != other_current_recording_index)
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index a2557930179b55f5ac67effa950a27b289d8729a..5bbe56bc0ef61114eb5b5926b9e1c4e5750bf27d 100755
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9844,13 +9844,13 @@
     <key>SceneLoadingPixelDiffThreshold</key>
     <map>
       <key>Comment</key>
-      <string>Amount of pixels changed required to consider the scene as still loading (fraction of pixels on screen)</string>
+      <string>Amount of pixels changed required to consider the scene as still loading (square root of fraction of pixels on screen)</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
       <string>F32</string>
       <key>Value</key>
-      <real>0.0003</real>
+      <real>0.02</real>
     </map>
     <key>ScriptHelpFollowsCursor</key>
     <map>
diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp
index eec4a703a193e0cb4e00ed1bb2fff49c8bd7ab69..2f48be12fb4a9f7cf2fba826a93c524ff23b6548 100644
--- a/indra/newview/llscenemonitor.cpp
+++ b/indra/newview/llscenemonitor.cpp
@@ -290,7 +290,6 @@ void LLSceneMonitor::capture()
 
 	if((timer.getElapsedTimeF32() > scene_load_sample_time() 
 			|| force_capture)
-		&& mDiffState == WAITING_FOR_NEXT_DIFF
 		&& mEnabled
 		&& LLGLSLShader::sNoFixedFunction
 		&& last_capture_frame != gFrameCount)
@@ -470,7 +469,8 @@ void LLSceneMonitor::fetchQueryResult()
 	static LLCachedControl<F32>  scene_load_sample_time(gSavedSettings, "SceneLoadingMonitorSampleTime");
 	static LLFrameTimer timer;	
 
-	if(mDiffState == WAIT_ON_RESULT && timer.getElapsedTimeF32() > scene_load_sample_time)
+	F32 elapsed_time = timer.getElapsedTimeF32();
+	if(mDiffState == WAIT_ON_RESULT && elapsed_time > scene_load_sample_time)
 	{
 		mDiffState = WAITING_FOR_NEXT_DIFF;
 
@@ -481,21 +481,24 @@ void LLSceneMonitor::fetchQueryResult()
 			GLuint count = 0;
 			glGetQueryObjectuivARB(mQueryObject, GL_QUERY_RESULT_ARB, &count);
 	
-			mDiffResult = count * 0.5f / (mDiff->getWidth() * mDiff->getHeight() * mDiffPixelRatio * mDiffPixelRatio); //0.5 -> (front face + back face)
+			mDiffResult = sqrtf(count * 0.5f / (mDiff->getWidth() * mDiff->getHeight() * mDiffPixelRatio * mDiffPixelRatio)); //0.5 -> (front face + back face)
 
 			LL_DEBUGS("SceneMonitor") << "Frame difference: " << std::setprecision(4) << mDiffResult << LL_ENDL;
-			record(sFramePixelDiff, sqrtf(mDiffResult));
+			record(sFramePixelDiff, mDiffResult);
 
 			static LLCachedControl<F32> diff_threshold(gSavedSettings,"SceneLoadingPixelDiffThreshold");
 			if(mDiffResult > diff_threshold())
 			{
 				mSceneLoadRecording.extend();
+				llassert(mSceneLoadRecording.getResults().getLastRecording().getDuration() > scene_load_sample_time);
 			}
 			else
 			{
 				mSceneLoadRecording.nextPeriod();
 			}
 		}
+
+		timer.reset();
 	}
 }
 
diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp
index 5f11a2b5196d0d4b25f298d5525556963ec8d06b..579567bb14d851c1d2d80d9aa9b19a19b6712b45 100755
--- a/indra/newview/llviewerassetstats.cpp
+++ b/indra/newview/llviewerassetstats.cpp
@@ -526,7 +526,6 @@ void record_enqueue(LLViewerAssetType::EType at, bool with_http, bool is_temp)
 {
 	const EViewerAssetCategories eac(asset_type_to_category(at, with_http, is_temp));
 
-	llinfos << "enqueue " << int(eac) << llendl;
 	add(*sEnqueued[int(eac)], 1);
 }