anemeth added a comment.
As others said the dpi scaling should normally be dealt with `QImage::setDevicePixelRatio()` As far as I can tell this is not working with Breeze for the following reason: The decoration rendering starts here: https://github.com/KDE/kwin/blob/master/decorations/decorationrenderer.cpp#L66 The dpi is set here correctly with `QImage::setDevicePixelRatio()` However this dpi value here is incorrect. `client()->client()->screenScale()` is defined here: https://github.com/KDE/kwin/blob/master/toplevel.cpp#L316 and gets the value from here: https://github.com/KDE/kwin/blob/master/toplevel.cpp#L277 And in that function `qreal newScale = screens()->scale(m_screen);` gets the value from here: https://github.com/KDE/kwin/blob/master/screens.cpp#L114 You can see that this function just returns 1, and because of this the devicepixelratio of the decoration QImage will always be 1. If I set Plasma scaling to 2 and change this value to 2 or the devicepixelratio here https://github.com/KDE/kwin/blob/master/decorations/decorationrenderer.cpp#L69 to 2 then the decoration renders very incorrectly. We already have a workaround in Breeze for this in some parts. For example here https://github.com/KDE/breeze/blob/master/kdecoration/breezebutton.cpp#L166 when rendering the buttons for Breeze decoration we scale the QPainter manually. This patch adds another workaround, but gets the job done, and as fixing this whole thing would be a big effort. REPOSITORY R31 Breeze REVISION DETAIL https://phabricator.kde.org/D12804 To: anemeth, #breeze, #vdg, hpereiradacosta, davidedmundson Cc: zzag, davidedmundson, ngraham, plasma-devel, ragreen, Pitel, ZrenBot, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart