diff --git a/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp b/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp
index f4ac22cded0781494b39f12a75a298c96b3283f1..d064f16b5b8859f44678626bb529246345a4cb3d 100644
--- a/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilermodelmanager.cpp
@@ -101,16 +101,24 @@ void QmlProfilerTraceTime::setTime(qint64 startTime, qint64 endTime)
 
 void QmlProfilerTraceTime::decreaseStartTime(qint64 time)
 {
-    if (m_startTime > time) {
+    if (m_startTime > time || m_startTime == -1) {
         m_startTime = time;
+        if (m_endTime == -1)
+            m_endTime = m_startTime;
+        else
+            QTC_ASSERT(m_endTime >= m_startTime, m_endTime = m_startTime);
         emit timeChanged(time, m_endTime);
     }
 }
 
 void QmlProfilerTraceTime::increaseEndTime(qint64 time)
 {
-    if (m_endTime < time) {
+    if (m_endTime < time || m_endTime == -1) {
         m_endTime = time;
+        if (m_startTime == -1)
+            m_startTime = m_endTime;
+        else
+            QTC_ASSERT(m_endTime >= m_startTime, m_startTime = m_endTime);
         emit timeChanged(m_startTime, time);
     }
 }