diff --git a/src/plugins/qmlprofiler/qmlprofilertool.cpp b/src/plugins/qmlprofiler/qmlprofilertool.cpp
index cabfd6bc4189b154837a796d43a492edd09802cf..6d8c5979d77dda563a5bf8c7c4b6c1fcf69ee0d8 100644
--- a/src/plugins/qmlprofiler/qmlprofilertool.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilertool.cpp
@@ -454,6 +454,7 @@ QWidget *QmlProfilerTool::createWidgets()
     d->m_traceWindow = new TraceWindow(mw);
     d->m_traceWindow->reset(d->m_client);
 
+    connect(d->m_traceWindow, SIGNAL(clearViewsFromTool()), this, SLOT(clearDisplay()));
     connect(d->m_traceWindow, SIGNAL(gotoSourceLocation(QString,int,int)),this, SLOT(gotoSourceLocation(QString,int,int)));
     connect(d->m_traceWindow, SIGNAL(contextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint)));
     connect(d->m_traceWindow->getEventList(), SIGNAL(error(QString)), this, SLOT(showErrorDialog(QString)));
diff --git a/src/plugins/qmlprofiler/tracewindow.cpp b/src/plugins/qmlprofiler/tracewindow.cpp
index 0e4953180c6bdf6848434d65fb3939f8b4f01320..2c35537801dfbede6b010531dac84e4d86a0ad9e 100644
--- a/src/plugins/qmlprofiler/tracewindow.cpp
+++ b/src/plugins/qmlprofiler/tracewindow.cpp
@@ -626,7 +626,7 @@ void TraceWindow::eventListStateChanged()
 void TraceWindow::manageTraceStart(qint64 traceStart)
 {
     // new trace started
-    clearDisplay();
+    emit clearViewsFromTool();
 
     emit traceStarted(traceStart);
 }
diff --git a/src/plugins/qmlprofiler/tracewindow.h b/src/plugins/qmlprofiler/tracewindow.h
index 80134c7c66d2d596ceea5f3dd7341592a85b14c7..df2d3fe27f434e5cf3d03863341ed6708e5fba35 100644
--- a/src/plugins/qmlprofiler/tracewindow.h
+++ b/src/plugins/qmlprofiler/tracewindow.h
@@ -148,6 +148,7 @@ signals:
     void recordingChanged(bool);
 
     void internalClearDisplay();
+    void clearViewsFromTool();
     void jumpToPrev();
     void jumpToNext();
     void rangeModeChanged(bool);