Wayland apps look wrong? Fix for broken scaling on Linux

Linux & Unix Intermediate 👁 26 views 📅 Jun 28, 2026

When you run an app on Wayland, it looks tiny, blurry, or stretched. This happens because the app doesn't know your monitor's scale. Here's how to fix it fast.

When does this happen?

You just switched to Wayland. Maybe you're on GNOME 43 or KDE Plasma 5.27. Your monitor is a 4K screen or a high-DPI laptop display (like a 14-inch 1920x1080 at 125% scaling). You launch an app — say, GIMP, Firefox, or a Qt-based tool like VLC. And it looks wrong. Tiny text you can't read, or it's blurry like a bad JPEG. Sometimes the whole window is stretched sideways. This isn't a driver crash. It's a scaling mismatch between Wayland and the app.

What's actually going on?

Wayland handles display scaling differently than X11. On X11, apps often read the DPI from the server and scaled themselves. Wayland gives the app a buffer at native resolution, then the compositor (GNOME's mutter or KWin) scales the output. But many apps — especially older ones or those not Wayland-aware — don't ask for the scale factor. They just render at 1x. That's why they look tiny. Or if they try to guess, they pick the wrong DPI and look stretched.

The real fix is to tell the app explicitly: "use this scale factor." You do it through environment variables. No magic, no recompiling. Just a config change.

Step-by-step fix

Step 1: Check your current Wayland scale

Open a terminal and run:

gsettings get org.gnome.desktop.interface scaling-factor

For KDE, check System Settings > Display and Monitor > Scale Display. Write down the scale factor as a whole number (like 1, 2) or a fraction (like 1.25).

Step 2: Set the environment variable for GTK apps

GTK3 and GTK4 apps (like GIMP, Firefox, Nautilus) use GDK_SCALE and GDK_DPI_SCALE. Add these to your ~/.profile or ~/.bashrc (or ~/.config/environment.d/*.conf for systemd). For a 200% scale (2x):

export GDK_SCALE=2
export GDK_DPI_SCALE=0.5

Wait — that math looks weird, right? Here's the trick: GDK_SCALE multiplies the window size. So 2 means double everything. GDK_DPI_SCALE then adjusts font rendering. Set GDK_DPI_SCALE to 1 / GDK_SCALE (so 0.5 for 2x). If you use 125% scaling, set GDK_SCALE=1 and GDK_DPI_SCALE=1.25.

Step 3: Set the environment variable for Qt apps

Qt apps (like VLC, Wireshark, or KDE's own) use QT_SCALE_FACTOR and QT_AUTO_SCREEN_SCALE_FACTOR. In the same file, add:

export QT_SCALE_FACTOR=1.25
export QT_AUTO_SCREEN_SCALE_FACTOR=0

Set QT_SCALE_FACTOR to your exact scale (1.25, 1.5, 2). Setting QT_AUTO_SCREEN_SCALE_FACTOR to 0 tells Qt to ignore automatic detection and use your value. Without that, Qt might double-scale and look huge.

Step 4: Restart your session

Log out and log back in. Or run source ~/.profile and then launch the app from the terminal to test. If it works, close the terminal and reopen the app from the launcher.

Step 5: Force Wayland for specific apps

Some apps fall back to XWayland (X11 compatibility layer) by default. That can break scaling again. Force them to use native Wayland with GDK_BACKEND=wayland. Add this to the app's desktop file or run from terminal:

GDK_BACKEND=wayland gimp

For Flatpak apps, use flatpak override --env=GDK_BACKEND=wayland your.app.id.

Step 6: Fractional scaling on GNOME (if needed)

If you need 1.25x or 1.5x, enable fractional scaling in GNOME:

gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

Then restart. This tells mutter to render the full screen at that scale. Combine with the environment variables above.

What to check if it still fails

  • Check if the app is running under XWayland: Run xeyes in a terminal. If the eyes follow the mouse when you move over the app, it's using XWayland. That's your problem. Force Wayland with GDK_BACKEND=wayland or QT_QPA_PLATFORM=wayland.
  • Electron apps: These (like Discord, Slack, VS Code) need --enable-features=UseOzonePlatform --ozone-platform=wayland as a launch flag. Edit their desktop file and add that to Exec= line.
  • Check display server: Run echo $XDG_SESSION_TYPE. If it says x11, you didn't switch to Wayland. Reboot and pick Wayland from the login screen.
  • Hardware acceleration: Some Intel or NVIDIA GPUs cause weird scaling on Wayland. Update your drivers. For NVIDIA, use the proprietary driver version 525+ and add nvidia-drm.modeset=1 to kernel parameters.
  • Had a client last month: Running Pop!_OS 22.04 with a 4K monitor. Everything looked tiny. He had set GDK_SCALE=2 but forgot GDK_DPI_SCALE=0.5. Text was huge and blurry. That one line fixed it.

If none of that works, your app might be too old. Some apps just don't support Wayland scaling. In that case, switch to X11 for that session or use a compositor like Sway (which handles scaling better natively). But for 95% of cases, these environment variables do the job. No reinstall, no crying. Just config.

Was this solution helpful?