Jamie Balfour

Welcome to my personal website.

Find out more about me, my personal projects, reviews, courses and much more here.

Why is Windows scaling so bad in 2026?

In 2026, this shouldn’t still be a question

We live in a world of 4K laptops, ultrawide monitors, mixed-DPI setups, and displays with pixel densities that would have seemed exotic a decade ago. And yet, on Windows, UI scaling remains one of the platform’s most visible and persistent weaknesses.

Blurry text. Tiny dialogs. Oversized buttons. Windows that look fine on one monitor and broken on another. If you’ve ever dragged an app from a laptop screen to an external display and watched it visibly re-render itself into something worse, you already know the problem.

So why is this still an issue in 2026?

A legacy problem measured in decades, not versions

Windows’ biggest strength has always been its biggest weakness: backwards compatibility.

Modern Windows must still support applications written for Win32 and GDI, WinForms, WPF, UWP, WinUI, and a long list of cross-platform frameworks like Java Swing, Qt, SDL, and Electron. Each of these approaches DPI and scaling differently, and some were designed long before high-DPI displays existed.

Unlike platforms that aggressively deprecated old APIs, Windows chose to keep them alive. That decision has consequences.

DPI awareness is optional, and frequently wrong

On Windows, applications are expected to declare their level of DPI awareness. In theory, this allows the OS to behave intelligently. In practice, it creates chaos.

The DPI awareness matrix

Apps can declare themselves as DPI unaware (Windows bitmap-scales them, which is usually blurry), system DPI aware (fine on one monitor but wrong on others), or per-monitor DPI aware (with multiple versions that behave differently).

The problem is that many apps don’t declare anything, declare the wrong level, or were written before per-monitor DPI existed. Others assume fixed pixel sizes internally and cannot reflow correctly when scaling changes.

When Windows has to guess, users pay the price

When Windows encounters an app that isn’t truly DPI-aware, it falls back to heuristics: bitmap scaling, compatibility shims, and other tricks intended to keep the UI usable. These tend to produce exactly the things people complain about: fuzziness, odd sizing, and inconsistent behaviour between apps.

Mixed-DPI monitors expose every weakness

The moment you connect a laptop display running at 150–200% scaling to an external monitor running at 100%, you’ve created the perfect conditions for everything to go sideways.

When a window crosses between monitors, Windows may need to recalculate layout, rescale fonts, resize controls, and re-render bitmaps. A modern, well-written app can respond to those changes and redraw itself correctly. A legacy app can’t. When it can’t, Windows stretches it like an image, and the result is UI that is technically scaled but visually wrong.

Why dragging windows feels unstable

That subtle “snap” or “repaint” you see when moving a window between displays is Windows switching modes or asking the app to re-evaluate DPI. Some apps respond smoothly. Others do it late, partially, or incorrectly. The user experiences this as randomness: the same app might look sharp one moment and slightly blurred the next, depending on where it was opened and how it was moved.

Swing and WinForms are the perfect case studies

Two of the best examples of why scaling goes wrong are Java Swing and classic WinForms. They’re widely used, long-lived, and rooted in assumptions that don’t hold up well on modern displays.

Java Swing: designed for a different era

Swing came from a time when pixels were assumed to be fixed and consistent. Many Swing applications use absolute positioning, cache font metrics, and render custom components manually. Even when the runtime improves HiDPI support, the app’s own layout decisions can fight it.

At 125% or 150% scaling, the cracks show: clipped text, misaligned controls, icons that don’t match text size, and UI that feels subtly “off” everywhere.

WinForms: “native”, but still old

WinForms is a Windows framework, but classic WinForms applications commonly rely on fixed dialog units, font-derived metrics, and assumptions that controls will remain roughly the same size. Scaling can resize controls without properly reflowing the layout, and text can grow faster than the space allocated for it.

The outcome is familiar: truncated labels, overlapping controls, awkward spacing, and dialogs that look like they were assembled by a different app entirely.

Compatibility hacks are necessary, and they make things worse

Windows doesn’t just support legacy apps; it tries to repair them. Settings like “Let Windows try to fix apps so they’re not blurry” are well-intentioned, but they’re a reminder of the underlying problem: Windows is compensating for software that wasn’t designed to scale.

The “sharp/blurry” roulette

These fixes can cause dynamic toggling between rendering modes or force bitmap scaling when the app fails to respond to DPI changes. This is why some apps switch between sharp and blurry depending on focus, monitor, launch order, or even whether you’ve logged out recently. It’s not magic. It’s a set of shims trying to keep old assumptions alive.

Why macOS feels better, and why that comparison hurts

Apple made different trade-offs. macOS pushed a single scaling model earlier, enforced retina support more aggressively, and was far more willing to deprecate legacy behaviour. Combined with tighter hardware control, the result is a more predictable scaling experience.

Windows, by contrast, prioritised compatibility across an enormous ecosystem. That choice helped Windows stay dominant, but it also ensured that modern UI expectations would constantly collide with old software realities.

This won’t be “fixed” in the way people mean

Microsoft knows how to solve UI scaling properly. The real constraint isn’t technical ability, it’s ecosystem cost. A “clean break” would break enterprise apps, internal tools, and decades of software that businesses still rely on. The backlash would be immediate and severe.

So Windows improves scaling incrementally: better per-monitor DPI behaviour, smarter heuristics, newer UI stacks. But it cannot force the entire world to rewrite everything, and it cannot fully modernise the past without risking the very compatibility that keeps Windows indispensable.

The uncomfortable truth

Windows scaling is bad in 2026, not because Microsoft is incompetent, but because Windows refuses to forget its history.

It supports too many UI frameworks. It tolerates too many incorrect assumptions. It carries too much legacy software forward, and it has to bridge the gaps with shims and fallbacks that inevitably look messy at modern resolutions.

Until Windows is willing to break more things, scaling will remain exactly as it is: mostly workable, sometimes impressive, and quietly shite when you look too closely.

Posted in Technology
Comments

There are no comments on this page.

New comment

Comments are welcome and encouraged, including disagreement and critique. However, this is not a space for abuse. Disagreement is welcome; personal attacks, harassment, or hate will be removed instantly. This site reflects personal opinions, not universal truths. If you can’t distinguish between the two, this probably isn’t the place for you. The system temporarily stores IP addresses and browser user agents for the purposes of spam prevention, moderation, and safeguarding. This data is automatically removed after fourteen days.

Comments powered by BalfComment

Powered by DASH 2.0
Scan and keep for the latest article or review every time!
https://www.jamiebalfour.scot/redirect/action/latest-article/