Created attachment 171085 [details] Audio Volume - Desktop Widget SUMMARY UI elements, like radio buttons, toggles and slider, of widgets/applets render incorrectly. The shape of the circle isn't smooth and appears to be cut around the edges. It isn't a consistent issue, as it depends on the size and the specific applet. Some applets like Audio Volume have it consistent with radio buttons, Bluetooth one with the toggle. STEPS TO REPRODUCE 1. Create an applet/widget containing round UI elements, such as "Audio Volume" 2. Set fractional scaling of the display (e.g. 125%) 3. Mesa around with the size of the applet and observe round elements OBSERVED RESULT The round UI elements, like radio buttons, toggles or sliders, are cut around the edges and don't look like smooth circles. See attached screenshot and take a close look at them. EXPECTED RESULT The round UI elements should render as smooth circles. SOFTWARE/OS VERSIONS Linux/KDE Plasma: Fedora 40 KDE Spin KDE Plasma Version: 6.1.0 KDE Frameworks Version: 6.3.0 Qt Version: 6.7.1 ADDITIONAL INFORMATION Display: 1920x1080@125%
Created attachment 171086 [details] Audio Volume - Panel Widget
Created attachment 171087 [details] Bluetooth - Panel Widget
while here seems to happen much less on 125% as well, i see it here and there, i think is possibly a ksvg (svgitem perhaps) issue where the final texture is just a tad too small for the final rendering
seems QSvgRenderer::boundsOnElement() might me not as precise as needed, especially that in the end we need to render it on a qpixmap which in the end has of course an integer width and height. if we do a round on the size, we might end up with some of the antialiasing of the curve cut off, but if we always ceil() the size, then the edges of the curve are correctly rendered, but then there might be unwanted almost transparent pixels around images, for instance square ones that we want to tile (like framesvg center elements) will not tile cleanly anymore
Might be related to https://bugs.kde.org/show_bug.cgi?id=479891 as the temporary fix mentioned there, involving QT_SCALE_FACTOR_ROUNDING_POLICY, has solved this problem as well.