diff --git a/src/plugins/qmlprofiler/qml/TimeDisplay.qml b/src/plugins/qmlprofiler/qml/TimeDisplay.qml
index 5a6a63b9e471b4cc328a23366de54885effa9630..c7340cfa398c5b47b1850463fb5f65ff9b10cd60 100644
--- a/src/plugins/qmlprofiler/qml/TimeDisplay.qml
+++ b/src/plugins/qmlprofiler/qml/TimeDisplay.qml
@@ -115,16 +115,26 @@ Canvas2D {
 
     function prettyPrintTime( t )
     {
-        if (t <= 0) return "0";
-        if (t<1000) return t+" ns";
-        t = t/1000;
-        if (t<1000) return t+" μs";
-        t = Math.floor(t/100)/10;
-        if (t<1000) return t+" ms";
-        t = Math.floor(t)/1000;
-        if (t<60) return t+" s";
-        var m = Math.floor(t/60);
-        t = Math.floor(t - m*60);
-        return m+"m"+t+"s";
+        var round = 1;
+        var barrier = 1;
+        var range = endTime - startTime;
+        var units = ["μs", "ms", "s"];
+
+        for (var i = 0; i < units.length; ++i) {
+            barrier *= 1000;
+            if (range < barrier)
+                round *= 1000;
+            else if (range < barrier * 10)
+                round *= 100;
+            else if (range < barrier * 100)
+                round *= 10;
+            if (t < barrier * 1000)
+                return Math.floor(t / (barrier / round)) / round + units[i];
+        }
+
+        t /= barrier;
+        var m = Math.floor(t / 60);
+        var s = Math.floor((t - m * 60) * round) / round;
+        return m + "m" + s + "s";
     }
 }