diff --git a/src/UI/DocumentViews/TimingAxis.cc b/src/UI/DocumentViews/TimingAxis.cc
index 797750ebc52648a27fdcc8d2b1cdd15e14cfbaab..5dc681100755406c8bfffb879bb3a2dda7e86e83 100644
--- a/src/UI/DocumentViews/TimingAxis.cc
+++ b/src/UI/DocumentViews/TimingAxis.cc
@@ -9,6 +9,7 @@
 #include <QScrollArea>
 #include <QScrollBar>
 #include <QVBoxLayout>
+#include <QTime>
 
 using namespace Vivy;
 
@@ -56,13 +57,31 @@ void TimingAxis::paint(QPainter *painter, const QStyleOptionGraphicsItem *option
     if (audioLength == 0)
         return;
 
-    painter->drawLine(x0, y, x1, y);
+    int ticks_base = y+ticksBase;
+    int yText = ticks_base - majorTicksHeight - timeDigitsMargin;
+    int majorTicksUp = ticks_base - majorTicksHeight;
+    int minorTicksUp = ticks_base - minorTicksHeight;
 
-    for (qreal i = majorTicks; i < x1-x0; i += majorTicks){
-        painter->drawLine(int(x0+i), y-5, int(x0+i), y+5);
+    painter->drawLine(x0, ticks_base, x1, ticks_base);
+
+    for (int i = majorTicks; i < x1-x0; i += majorTicks){
+        painter->drawText(QPoint(x0+i, yText), msToString(i));
+        painter->drawLine(int(x0+i), majorTicksUp, int(x0+i), ticks_base);
     }
     if (minorTicks >= 0)
-        for (qreal i = minorTicks; i < x1-x0; i += minorTicks)
+        for (int i = minorTicks; i < x1-x0; i += minorTicks)
             if (fmod(i, majorTicks) != 0)
-                painter->drawLine(int(x0+i), y-2, int(x0+i), y+2);
+                painter->drawLine(int(x0+i), minorTicksUp, int(x0+i), ticks_base);
+}
+
+QString
+TimingAxis::msToString(int t) const noexcept
+{
+    qDebug() << "GOT " << t;
+    QString ret(QString::number(t/1000) + QString(".") + QString::number(t % 1000 / majorTicks));
+    if (t >= 60000)
+        ret.prepend(QString::number(t/60000) + QString(":"));
+    if (t >= 360000)
+        ret.prepend(QString::number(t/360000) + QString(":"));
+    return ret;
 }
diff --git a/src/UI/DocumentViews/TimingAxis.hh b/src/UI/DocumentViews/TimingAxis.hh
index b7502729460c0da84963d4aeb7b810681d039b94..05d9a3b4fd37b67340af8f8ffedec2ed9ca3bd41 100644
--- a/src/UI/DocumentViews/TimingAxis.hh
+++ b/src/UI/DocumentViews/TimingAxis.hh
@@ -25,17 +25,31 @@ public:
 private:
     static inline constexpr QColor axisColour   = QColor(0, 0, 127);
 
-    QVector<qreal> availableTicks = { 10, 100, 1000, 10000, 60000, 3600000, 86400000 };
-    qreal minBetweenMinor{ 5 };
-    qreal minorTicks;
-    qreal majorTicks;
-
     qreal penWidth{ 1 };
     quint64 audioLength{ 0 };
+
+    /*
+     * We use ints here because
+     * qPainter->drawLine() and qPainter->drawText()
+     * restrict us to ints anyways
+     */
+    QVector<int> availableTicks = { 10, 100, 1000, 10000, 60000, 3600000, 86400000 };
+    qreal minBetweenMinor{ 5 };
+    int minorTicks;
+    int majorTicks;
+
+    int minorTicksHeight { 3  };
+    int majorTicksHeight { 7  };
+    int timeDigitsHeight { 20 };
+    int timeDigitsMargin { 3  };
+    int ticksBase        { 30 };
+
     int x0{ 0 };
     int x1{ 0 };
     int y { 0 };
 
+    QString msToString(int t) const noexcept;
+
 protected:
 
 public slots:
diff --git a/src/UI/DocumentViews/TimingScene.cc b/src/UI/DocumentViews/TimingScene.cc
index 4dc4b2e72ff65d0de6b537ad4addddd18a69d898..8ed4ac68974a1a4560cc7e74cd71a14cd89a2bc9 100644
--- a/src/UI/DocumentViews/TimingScene.cc
+++ b/src/UI/DocumentViews/TimingScene.cc
@@ -75,14 +75,20 @@ TimingScene::handleMousePressEventChar(QGraphicsSceneMouseEvent *, Ass::LinePtr)
 {
 }
 
-qreal
-TimingScene::timeFromPos(qreal x)
+quint64
+TimingScene::timeFromPos(qreal x) const
 {
-    if (const qreal w = width(); x <= 0 || w <= 0) {
+    return timeFromPos(quint64(x));
+}
+
+quint64
+TimingScene::timeFromPos(quint64 x) const
+{
+    if (const quint64 w = quint64(width()); x <= 0 || w <= 0) {
         qCritical() << "Try avoid possible divide by zero in the time from position";
         return 0;
     } else {
-        return x * qreal(soundLength) / w;
+        return x * soundLength / w;
     }
 }
 
diff --git a/src/UI/DocumentViews/TimingScene.hh b/src/UI/DocumentViews/TimingScene.hh
index 7c8f4bbde044dd61f6d9f10b0cda44f16b270f2f..1e9bda5e64945c6bb9c158f9a445644ab509e6a1 100644
--- a/src/UI/DocumentViews/TimingScene.hh
+++ b/src/UI/DocumentViews/TimingScene.hh
@@ -44,7 +44,8 @@ public:
     TimingAxis* getAxis();
 
 private:
-    quint64 timeFromPos(qreal x);
+    inline quint64 timeFromPos(qreal x) const;
+    quint64 timeFromPos(quint64 x) const;
     void handleMousePressEventLine(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
     void handleMousePressEventSyl(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;
     void handleMousePressEventChar(QGraphicsSceneMouseEvent *, Ass::LinePtr) noexcept;