From 587e73d71dc04aa7dc139eb79d8827a2fe385eaa Mon Sep 17 00:00:00 2001 From: Ariel Nogueira Kovaljski <40664661+ANK-dev@users.noreply.github.com> Date: Fri, 5 Sep 2025 23:34:28 -0300 Subject: [PATCH] Sharper icon scaling (#3553) * take ceiling instead of truncation for icon scaling * #include and change std::ceilf to std::ceil --- src/duckstation-qt/qtutils.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/duckstation-qt/qtutils.cpp b/src/duckstation-qt/qtutils.cpp index bbf4b5f29..5bef94448 100644 --- a/src/duckstation-qt/qtutils.cpp +++ b/src/duckstation-qt/qtutils.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #if defined(_WIN32) #include "common/windows_headers.h" @@ -330,12 +331,12 @@ template static void ResizeSharpBilinearT(T& pm, int size, int base_size) { // Sharp Bilinear scaling - // First, scale the icon by the largest integer size using nearest-neighbor... - const int integer_icon_size = static_cast(size / base_size) * base_size; + // First, scale the icon by the next largest integer size using nearest-neighbor... + const int integer_icon_size = std::ceil(static_cast(size) / base_size) * base_size; pm = pm.scaled(integer_icon_size, integer_icon_size, Qt::IgnoreAspectRatio, Qt::FastTransformation); - // ...then scale any remainder using bilinear interpolation. - if (size - integer_icon_size > 0) + // ...then scale down any remainder using bilinear interpolation. + if (integer_icon_size - size > 0) pm = pm.scaled(size, size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); }