diff --git a/src/Lib/Audio.cc b/src/Lib/Audio.cc
index 5dc0cf61456f25fdb2a36fc47979e24351b85d16..7639f3a50a1728c7c388a4aeb20b4a33b57c3982 100644
--- a/src/Lib/Audio.cc
+++ b/src/Lib/Audio.cc
@@ -296,11 +296,11 @@ AudioContext::Stream::getBitRate() const noexcept
     return codecContext->bit_rate;
 }
 
-qreal
+quint64
 AudioContext::Stream::getLength() const noexcept
 {
     // The whole file duration, not individual streams.
-    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());
 }
 
 // Get the information about the decoded state of this stream
diff --git a/src/Lib/Audio.hh b/src/Lib/Audio.hh
index 5bf01907715ea43ee1930fc1f1a0bc7db8f83085..72e251c42a10696be5b52e5993793279669f369f 100644
--- a/src/Lib/Audio.hh
+++ b/src/Lib/Audio.hh
@@ -88,7 +88,7 @@ public:
         qint64 getBitRate() const noexcept;
         // Get audio context length, if a stream is translated putting the length
         // on the `Stream` can pose some problems.
-        qreal getLength() const noexcept;
+        quint64 getLength() const noexcept;
 
         // Get the index from the audio context
         int getStreamIndex() const noexcept;
diff --git a/src/UI/DocumentViews/AudioVisualizer.cc b/src/UI/DocumentViews/AudioVisualizer.cc
index fce4751f62184938bdc2c2267297ab86b781a6ef..457e5cb62f1bc8871402b62e3624d49bf077a998 100644
--- a/src/UI/DocumentViews/AudioVisualizer.cc
+++ b/src/UI/DocumentViews/AudioVisualizer.cc
@@ -74,7 +74,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 329690bf764c606cc2d34e5ced1659f21d4b47f9..3ca56df66eeea7a4821f627bc411fb59a97dcb8b 100644
--- a/src/UI/DocumentViews/AudioVisualizer.hh
+++ b/src/UI/DocumentViews/AudioVisualizer.hh
@@ -37,7 +37,7 @@ public:
     ~AudioVisualizer() noexcept = 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 ded764d5a15bce3b71ee709bed9f6ad296f2558a..797750ebc52648a27fdcc8d2b1cdd15e14cfbaab 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_),
@@ -36,7 +36,7 @@ void TimingAxis::refreshTicks() {
     QGraphicsScene *parentScene = scene();
     if (parentScene != nullptr){
         for (minorTicksIndex = 0; minorTicksIndex < nbAvailableTicks; minorTicksIndex++){
-            if (parentScene->width() / (audioLength * availableTicks[minorTicksIndex]) < minBetweenMinor){
+            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 ea229d4920a8f87f0cc5872124078266bf8719b0..b7502729460c0da84963d4aeb7b810681d039b94 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 = 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 6eb79ee37e8122fc270a13ed3acfed8070fae600..6ed3ebb6eeb6a30d3718cdd8ce378429198ac940 100644
--- a/src/UI/DocumentViews/TimingScene.cc
+++ b/src/UI/DocumentViews/TimingScene.cc
@@ -20,7 +20,7 @@ TimingScene::TimingScene(QWidget *parent) noexcept
 {
 }
 
-TimingScene::TimingScene(QImage img_, qreal soundLength_, QWidget *parent) noexcept
+TimingScene::TimingScene(QImage img_, quint64 soundLength_, QWidget *parent) noexcept
     : QGraphicsScene(parent)
     , img(img_)
     , soundLength(soundLength_)
@@ -74,7 +74,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 5d51774ac0374c1e694a174ae5f76be5cf499a1f..1ba6ae0c94453ec0962581228452e46bec9949a1 100644
--- a/src/UI/DocumentViews/TimingScene.hh
+++ b/src/UI/DocumentViews/TimingScene.hh
@@ -27,13 +27,13 @@ public:
     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 = 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 3b14d7f859b856e982d4509c53121df6e73adc88..3873f76f59af707c2a0977fc47b0185691b717a7 100644
--- a/src/UI/DocumentViews/TimingView.cc
+++ b/src/UI/DocumentViews/TimingView.cc
@@ -15,7 +15,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 f40e150ad7e8162cc90944e26ecf8865ca2f8754..1a9841f95f3e43be48ddd0ec9cbe894563ea7c87 100644
--- a/src/UI/DocumentViews/TimingView.hh
+++ b/src/UI/DocumentViews/TimingView.hh
@@ -26,7 +26,7 @@ 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 = default;
 
     TimingScene* getTimingScene() const;