diff --git a/src/Lib/AbstractMediaContext.hh b/src/Lib/AbstractMediaContext.hh
index a73f92efdc5c6f699c99db9d3df7b4edc5620079..2a9448b4c9334b6c7b86ae0d04166cce51c8348b 100644
--- a/src/Lib/AbstractMediaContext.hh
+++ b/src/Lib/AbstractMediaContext.hh
@@ -99,11 +99,11 @@ public:
         return ret;
     }
 
-    qreal getDuration() const noexcept
+    quint64 getDuration() const noexcept
     {
-        return qreal(std::chrono::duration<qreal, std::ratio<1, 1>>(
-                         std::chrono::microseconds(dataFormat->duration))
-                         .count());
+        return quint64(std::chrono::duration<qreal, std::ratio<1, 1000>>(
+                           std::chrono::microseconds(dataFormat->duration))
+                           .count());
     }
 
 protected:
@@ -192,12 +192,12 @@ public:
         return StreamWeakPtr{ spareNullSreamPtr };
     }
 
-    qreal getDuration() const noexcept
+    quint64 getDuration() const noexcept
     {
         // The whole file duration, not individual streams.
-        return qreal(std::chrono::duration<qreal, std::ratio<1, 1>>(
-                         std::chrono::microseconds(format->duration))
-                         .count());
+        return quint64(std::chrono::duration<qreal, std::ratio<1, 1000>>(
+                           std::chrono::microseconds(format->duration))
+                           .count());
     }
 
     StreamWeakPtr getDefaultStream() const noexcept
diff --git a/src/Lib/Audio.hh b/src/Lib/Audio.hh
index 920b1033228943d2ffc2a63c435682e06a7883fe..08706f94dee910e2852c28bba3ac8fe1f3b35ccc 100644
--- a/src/Lib/Audio.hh
+++ b/src/Lib/Audio.hh
@@ -56,10 +56,6 @@ private:
 class AudioContext final : public AbstractMediaContext<AudioStream> {
     VIVY_UNMOVABLE_OBJECT(AudioContext)
 
-public:
-    using StreamPtr     = std::shared_ptr<AudioStream>;
-    using StreamWeakPtr = std::weak_ptr<AudioStream>;
-
 public:
     AudioContext(const QString &path);
 
diff --git a/src/UI/DocumentViews/AudioVisualizer.cc b/src/UI/DocumentViews/AudioVisualizer.cc
index 894a64125b32b0f23f5d2f279c265f7510bfbc11..c0f0fa31a601044eb2e7876d1d6cebb2c786fe14 100644
--- a/src/UI/DocumentViews/AudioVisualizer.cc
+++ b/src/UI/DocumentViews/AudioVisualizer.cc
@@ -63,7 +63,7 @@ AudioVisualizer::AudioVisualizer(AudioContext::StreamPtr stream, QWidget *parent
 }
 
 void
-AudioVisualizer::printSpectrum(QImage pixmap, qreal audioLength) noexcept
+AudioVisualizer::printSpectrum(QImage pixmap, quint64 audioLength) noexcept
 {
     TimingView *timer   = new TimingView(pixmap, audioLength, this);
     QHBoxLayout *layout = new QHBoxLayout;
diff --git a/src/UI/DocumentViews/AudioVisualizer.hh b/src/UI/DocumentViews/AudioVisualizer.hh
index a69436677b049e297ef85dbf041eda8fa0eb6916..33523f7ac34ec8720537a3373a4550c8f1f56dbf 100644
--- a/src/UI/DocumentViews/AudioVisualizer.hh
+++ b/src/UI/DocumentViews/AudioVisualizer.hh
@@ -34,7 +34,7 @@ public:
     ~AudioVisualizer() noexcept override = default;
 
 public slots:
-    void printSpectrum(QImage, qreal) noexcept;
+    void printSpectrum(QImage, quint64) noexcept;
 };
 
 }
diff --git a/src/UI/DocumentViews/TimingAxis.cc b/src/UI/DocumentViews/TimingAxis.cc
index d674234b120e394c6af7ae559b91e097febbeb5e..f9b861cf84786594acc5d9f8bace303dd8dd4ce4 100644
--- a/src/UI/DocumentViews/TimingAxis.cc
+++ b/src/UI/DocumentViews/TimingAxis.cc
@@ -12,7 +12,7 @@
 
 using namespace Vivy;
 
-TimingAxis::TimingAxis(qreal audioLength_, int x0_, int x1_, int y_) noexcept
+TimingAxis::TimingAxis(quint64 audioLength_, int x0_, int x1_, int y_) noexcept
     : QGraphicsObject()
     , audioLength(audioLength_)
     , x0(x0_)
@@ -40,7 +40,7 @@ TimingAxis::refreshTicks()
     QGraphicsScene *parentScene = scene();
     if (parentScene != nullptr) {
         for (minorTicksIndex = 0; minorTicksIndex < nbAvailableTicks; minorTicksIndex++) {
-            if (parentScene->width() / (audioLength * availableTicks[minorTicksIndex]) <
+            if (parentScene->width() / (qreal(audioLength) * availableTicks[minorTicksIndex]) <
                 minBetweenMinor) {
                 minorTicksIndex = minorTicksIndex == 0 ? 0 : minorTicksIndex - 1;
                 break;
diff --git a/src/UI/DocumentViews/TimingAxis.hh b/src/UI/DocumentViews/TimingAxis.hh
index 812f040d27d2c19f32e57b6cee226928f2a76671..50a3bad06d1dc80082308628cdfc028d5cded516 100644
--- a/src/UI/DocumentViews/TimingAxis.hh
+++ b/src/UI/DocumentViews/TimingAxis.hh
@@ -16,7 +16,7 @@ class TimingAxis final : public QGraphicsObject {
     Q_OBJECT
 
 public:
-    explicit TimingAxis(qreal audioLength, int x0, int x1, int y) noexcept;
+    explicit TimingAxis(quint64 audioLength, int x0, int x1, int y) noexcept;
     ~TimingAxis() noexcept override = default;
 
     QRectF boundingRect() const override;
@@ -25,13 +25,13 @@ public:
 private:
     static inline constexpr QColor axisColour = QColor(0, 0, 127);
 
-    QVector<qreal> availableTicks = { 0.01, 0.1, 1, 10, 60, 3600, 86400 };
+    QVector<qreal> availableTicks = { 10, 100, 1000, 10000, 60000, 3600000, 86400000 };
     qreal minBetweenMinor{ 5 };
     qreal minorTicks;
     qreal majorTicks;
 
     qreal penWidth{ 1 };
-    qreal audioLength{ 0 };
+    quint64 audioLength{ 0 };
     int x0{ 0 };
     int x1{ 0 };
     int y{ 0 };
diff --git a/src/UI/DocumentViews/TimingScene.cc b/src/UI/DocumentViews/TimingScene.cc
index c58afb16b62cf11c831a7a96a789ae5feb349b10..45fbec78198019f5bc87d562c73ff24f6cabb2b8 100644
--- a/src/UI/DocumentViews/TimingScene.cc
+++ b/src/UI/DocumentViews/TimingScene.cc
@@ -15,12 +15,7 @@
 
 using namespace Vivy;
 
-TimingScene::TimingScene(QWidget *parent) noexcept
-    : QGraphicsScene(parent)
-{
-}
-
-TimingScene::TimingScene(QImage img_, qreal soundLength_, QWidget *parent) noexcept
+TimingScene::TimingScene(QImage img_, quint64 soundLength_, QWidget *parent) noexcept
     : QGraphicsScene(parent)
     , img(img_)
     , soundLength(soundLength_)
@@ -82,7 +77,7 @@ TimingScene::timeFromPos(qreal x)
         qCritical() << "Try avoid possible divide by zero in the time from position";
         return 0;
     } else {
-        return x * soundLength / w;
+        return x * qreal(soundLength) / w;
     }
 }
 
diff --git a/src/UI/DocumentViews/TimingScene.hh b/src/UI/DocumentViews/TimingScene.hh
index 67c8749aec1b9d08033d61dcab4c406c34793013..6d28bf1775967966a19e50e99ec07895be9ec863 100644
--- a/src/UI/DocumentViews/TimingScene.hh
+++ b/src/UI/DocumentViews/TimingScene.hh
@@ -18,14 +18,13 @@ public:
     static inline constexpr QColor startColour = QColor(127, 0, 127);
     static inline constexpr QColor endColour   = QColor(0, 127, 0);
 
-    explicit TimingScene(QWidget *parent = nullptr) noexcept;
-    explicit TimingScene(QImage, qreal, QWidget * = nullptr) noexcept;
+    explicit TimingScene(QImage, quint64, QWidget * = nullptr) noexcept;
     ~TimingScene() noexcept override = default;
 
 private:
     QGraphicsPixmapItem *backgroundImg{ nullptr };
     QImage img;
-    qreal soundLength{ 0 };
+    quint64 soundLength{ 0 };
     Ass::LineWeakPtr currentLine{};
     TimingMode timingMode{ TimingMode::Line };
     TimingAxis *ax;
diff --git a/src/UI/DocumentViews/TimingView.cc b/src/UI/DocumentViews/TimingView.cc
index 0944c024955b84be365f922ac81a5da189126538..81232d6f5fff31da7a4dacf56e235e879ae514fd 100644
--- a/src/UI/DocumentViews/TimingView.cc
+++ b/src/UI/DocumentViews/TimingView.cc
@@ -2,7 +2,7 @@
 
 using namespace Vivy;
 
-TimingView::TimingView(QImage img, qreal soundLength, QWidget *parent) noexcept
+TimingView::TimingView(QImage img, quint64 soundLength, QWidget *parent) noexcept
     : QGraphicsView(parent)
 {
     currentScene = new TimingScene(img, soundLength, this);
diff --git a/src/UI/DocumentViews/TimingView.hh b/src/UI/DocumentViews/TimingView.hh
index c9c8032d6161604361edafd57bdd30097d4f2dcb..e39ea90e4c13f2bcc140027305fb094d0c32d087 100644
--- a/src/UI/DocumentViews/TimingView.hh
+++ b/src/UI/DocumentViews/TimingView.hh
@@ -20,11 +20,10 @@ public:
     static inline constexpr QColor startColour = QColor(127, 0, 127);
     static inline constexpr QColor endColour   = QColor(0, 127, 0);
 
-    explicit TimingView(QImage, qreal, QWidget * = nullptr) noexcept;
+    explicit TimingView(QImage, quint64, QWidget * = nullptr) noexcept;
     ~TimingView() noexcept override = default;
 
     TimingScene *getTimingScene() const;
-
     void wheelEvent(QWheelEvent *) noexcept override;
 
 private: