diff --git a/src/plugins/bineditor/bineditor.cpp b/src/plugins/bineditor/bineditor.cpp
index 656d80b1d3c3f9fe48e6e1c8500784657e5fc8a2..6376eee65583030d1045488975a594ee703c335c 100644
--- a/src/plugins/bineditor/bineditor.cpp
+++ b/src/plugins/bineditor/bineditor.cpp
@@ -422,8 +422,9 @@ void BinEditor::setLazyData(quint64 startAddr, int range, int blockSize)
     m_baseAddr = static_cast<quint64>(range/2) > startAddr
                 ? 0 : startAddr - range/2;
     m_baseAddr = (m_baseAddr / blockSize) * blockSize;
-    m_size = m_baseAddr != 0 && static_cast<quint64>(range) >= -m_baseAddr
-             ? -m_baseAddr : range;
+    const quint64 maxRange = Q_UINT64_C(0xffffffffffffffff) - m_baseAddr + 1;
+    m_size = m_baseAddr != 0 && static_cast<quint64>(range) >= maxRange
+             ? maxRange : range;
     m_addressBytes = (m_baseAddr + m_size < quint64(1) << 32
                       && m_baseAddr + m_size >= m_baseAddr) ? 4 : 8;