diff --git a/libs/ui/canvas/kis_canvas2.cpp b/libs/ui/canvas/kis_canvas2.cpp --- a/libs/ui/canvas/kis_canvas2.cpp +++ b/libs/ui/canvas/kis_canvas2.cpp @@ -730,11 +730,15 @@ KisImageSP image = this->image(); const qreal effectiveZoom = m_d->coordinatesConverter->effectiveZoom(); + const qreal devicePixelRatio = m_d->canvasWidget->widget()->devicePixelRatioF(); KisConfig cfg; const int maxLod = cfg.numMipmapLevels(); - int lod = KisLodTransform::scaleToLod(effectiveZoom, maxLod); + // The desired LoD level should consider the devicePixelRatio scale factor + // because the canvas is actually rendered in the device pixel space, not + // the logical pixel space by Qt's internal HiDPI scaling. + int lod = KisLodTransform::scaleToLod(effectiveZoom * devicePixelRatio, maxLod); image->setDesiredLevelOfDetail(lod); }