diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp
index 179a73413e07712575020493becc249b950b0182..02912f12a99f47fea5d6448710ec511e45a7fb09 100644
--- a/indra/newview/llscenemonitor.cpp
+++ b/indra/newview/llscenemonitor.cpp
@@ -39,6 +39,7 @@
 #include "llspatialpartition.h"
 #include "llagent.h"
 #include "pipeline.h"
+#include "llviewerparcelmgr.h"
 #include "llviewerpartsim.h"
 
 LLSceneMonitorView* gSceneMonitorView = NULL;
@@ -702,6 +703,13 @@ LLSceneMonitorView::LLSceneMonitorView(const LLRect& rect)
 	
 	setCanMinimize(false);
 	setCanClose(true);
+
+	sTeleportFinishConnection = LLViewerParcelMgr::getInstance()->setTeleportFinishedCallback(boost::bind(&LLSceneMonitorView::onTeleportFinished, this));
+}
+
+LLSceneMonitorView::~LLSceneMonitorView()
+{
+	sTeleportFinishConnection.disconnect();
 }
 
 void LLSceneMonitorView::onClose(bool app_quitting)
@@ -714,6 +722,14 @@ void LLSceneMonitorView::onClickCloseBtn(bool app_quitting)
 	setVisible(false);
 }
 
+void LLSceneMonitorView::onTeleportFinished()
+{
+	if(isInVisibleChain())
+	{
+		LLSceneMonitor::getInstance()->reset();
+	}
+}
+
 void LLSceneMonitorView::onVisibilityChange(BOOL visible)
 {
 	if (!LLGLSLShader::sNoFixedFunction && visible)
diff --git a/indra/newview/llscenemonitor.h b/indra/newview/llscenemonitor.h
index 5bde3b5aabc1a19dadb3624799feb7d9ba049de1..2b6ea57b96016a88663da97aa9865d0e399ee141 100644
--- a/indra/newview/llscenemonitor.h
+++ b/indra/newview/llscenemonitor.h
@@ -64,10 +64,12 @@ class LLSceneMonitor : public LLSingleton<LLSceneMonitor>
 	void dumpToFile(std::string file_name);
 	bool hasResults() const { return mSceneLoadRecording.getResults().getDuration() != S32Seconds(0);}
 
+	void reset();
+
 private:
 	void freezeScene();
 	void unfreezeScene();
-	void reset();
+
 	LLRenderTarget& getCaptureTarget();
 	void generateDitheringTexture(S32 width, S32 height);
 
@@ -109,7 +111,7 @@ class LLSceneMonitorView : public LLFloater
 {
 public:
 	LLSceneMonitorView(const LLRect& rect);
-
+	~LLSceneMonitorView();
 	virtual void draw();
 
 	virtual void onVisibilityChange(BOOL visible);
@@ -117,6 +119,8 @@ class LLSceneMonitorView : public LLFloater
 protected:
 	virtual void onClose(bool app_quitting=false);
 	virtual void onClickCloseBtn(bool app_quitting=false);
+	void onTeleportFinished();
+	boost::signals2::connection sTeleportFinishConnection;
 };
 
 extern LLSceneMonitorView* gSceneMonitorView;