diff --git a/src/plugins/qmlprofiler/qml/RangeDetails.qml b/src/plugins/qmlprofiler/qml/RangeDetails.qml
index 5c8117cdbdc3d292d3660b7009bc1d66f2478056..55c3e3550594a73bd135ad5056921689b1c8df1f 100644
--- a/src/plugins/qmlprofiler/qml/RangeDetails.qml
+++ b/src/plugins/qmlprofiler/qml/RangeDetails.qml
@@ -51,7 +51,10 @@ Item {
     y: 25
 
     property int yoffset: root.scrollY
-    onYoffsetChanged: y = relativey + yoffset
+    onYoffsetChanged: {
+        y = relativey + yoffset
+        fitInView();
+    }
     property int relativey : y - yoffset
     onYChanged: relativey = y - yoffset
 
@@ -71,10 +74,10 @@ Item {
             x = root.width - width;
         if (x < 0)
             x = 0;
-        if (y + height > root.candidateHeight)
-            y = root.candidateHeight - height;
-        if (y < 0)
-            y = 0;
+        if (y - yoffset + height > root.candidateHeight)
+            y = root.candidateHeight - height + yoffset;
+        if (y < yoffset)
+            y = yoffset;
     }
 
     // shadow
@@ -187,8 +190,8 @@ Item {
         drag.target: parent
         drag.minimumX: 0
         drag.maximumX: root.width - parent.width
-        drag.minimumY: 0
-        drag.maximumY: root.candidateHeight - parent.height
+        drag.minimumY: yoffset
+        drag.maximumY: root.candidateHeight - parent.height + yoffset
         onClicked: {
             root.gotoSourceLocation(file, line, column);
             root.recenterOnItem(view.selectedItem);
diff --git a/src/plugins/qmlprofiler/qml/SelectionRangeDetails.qml b/src/plugins/qmlprofiler/qml/SelectionRangeDetails.qml
index 29bce7bc0568516292f067461cdfc65c6d3af892..0081962481794c0f1176912033f9585f19aac376 100644
--- a/src/plugins/qmlprofiler/qml/SelectionRangeDetails.qml
+++ b/src/plugins/qmlprofiler/qml/SelectionRangeDetails.qml
@@ -46,7 +46,10 @@ Item {
     y: 125
 
     property int yoffset: root.scrollY
-    onYoffsetChanged: y = relativey + yoffset
+    onYoffsetChanged: {
+        y = relativey + yoffset
+        fitInView();
+    }
     property int relativey : y - yoffset
     onYChanged: relativey = y - yoffset
 
@@ -66,10 +69,10 @@ Item {
             x = root.width - width;
         if (x < 0)
             x = 0;
-        if (y + height > root.candidateHeight)
-            y = root.candidateHeight - height;
-        if (y < 0)
-            y = 0;
+        if (y + height - yoffset > root.candidateHeight)
+            y = root.candidateHeight - height + yoffset;
+        if (y < yoffset)
+            y = yoffset;
     }
 
     // shadow
@@ -158,8 +161,8 @@ Item {
         drag.target: parent
         drag.minimumX: 0
         drag.maximumX: root.width - parent.width
-        drag.minimumY: 0
-        drag.maximumY: root.candidateHeight - parent.height
+        drag.minimumY: yoffset
+        drag.maximumY: root.candidateHeight - parent.height + yoffset
         onClicked: {
             if ((selectionRange.x < flick.contentX) ^ (selectionRange.x+selectionRange.width > flick.contentX + flick.width)) {
                 root.recenter(selectionRange.startTime + selectionRange.duration/2);