diff --git a/src/UI/DocumentViews/TimingAxis.cc b/src/UI/DocumentViews/TimingAxis.cc
index f9b861cf84786594acc5d9f8bace303dd8dd4ce4..d21b81144b13e092493d06032ebb987d87effad2 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;
 
@@ -63,13 +64,31 @@ TimingAxis::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *
     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 50a3bad06d1dc80082308628cdfc028d5cded516..b045a0028a28dfce91b1090c4fc495df55a3aef6 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:
     void refreshTicks();
diff --git a/src/UI/DocumentViews/TimingScene.cc b/src/UI/DocumentViews/TimingScene.cc
index 45fbec78198019f5bc87d562c73ff24f6cabb2b8..a83996580a72b0f78c620f7f4f13db7e21d7bb6c 100644
--- a/src/UI/DocumentViews/TimingScene.cc
+++ b/src/UI/DocumentViews/TimingScene.cc
@@ -70,14 +70,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 6d28bf1775967966a19e50e99ec07895be9ec863..3dc3f26cc0931d234032e0749e22a53483ddf0ec 100644
--- a/src/UI/DocumentViews/TimingScene.hh
+++ b/src/UI/DocumentViews/TimingScene.hh
@@ -36,6 +36,8 @@ public:
     TimingAxis *getAxis();
 
 private:
+    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;