dotnet / dotnet/wpf

[Feature Request] Add option to force 100% UI rendering in WPF regardless of system DPI scaling

Open
#11,039 8 comments 0 reactions 0 assignees View on GitHub
Feature Request
Dominant language
C#
Stars
7.7k
Forks
1.3k
Avg merge
1d 11h
Merged PRs (30d)
61

Description

In modern enterprise environments, it's common to use laptops with a default display scaling of **150%**, while external monitors remain at **100%**. This mixed-DPI setup—despite having the same resolution—causes WPF applications to behave inconsistently:

- UI elements are resized unexpectedly
- Text becomes oversized or blurry
- Layouts break or overflow
- Critical functionality becomes inaccessible

This severely impacts usability, maintainability, and business productivity.

---

### Request:

Please add a manifest setting or API that allows developers to **force WPF applications to render at 100% scale**, regardless of the system's DPI settings or PerMonitorV2 behavior.

#### Suggested options:

- Manifest tag:
```xml
fixed96dpi
```
- API call:
```csharp
SetProcessDpiFixed96(); // Forces 96 DPI rendering
```
- Windows setting:
“Allow apps to ignore display scaling” toggle for advanced users

---

### Why this matters:

- Current DPI Awareness modes (`system`, `perMonitor`, `perMonitorV2`) do not allow full control over rendering scale
- Even with `SetProcessDpiAwareness()` or `SetProcessDPIAware()`, Windows 11 still enforces DPI scaling when dragging windows between monitors
- Developers have no reliable way to ensure consistent UI rendering across mixed-DPI environments

---

### Impact:

This issue affects thousands of enterprise applications and users globally. It causes visual inconsistencies, functional errors, and user frustration—ultimately hindering productivity and contributing to economic inefficiency.

---

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.