You connect your Fedora workstation to a 4K display or a modern high-density laptop screen
The desktop loads, but the interface looks microscopic. You open Settings, bump the scale to 200%, and the text becomes readable. The windows, however, look blocky and oversized. You switch to 125% or 150% for a better balance. You log out to test the login screen, and GDM snaps back to 100%. The cursor is tiny. The password box is misaligned. The mismatch between your session and the display manager breaks the workflow. You need the scaling to apply globally, including the boot sequence and the login prompt.
What's actually happening
Display scaling tells the compositor how many logical pixels map to physical screen pixels. Integer scaling like 100% or 200% is straightforward. Each logical pixel occupies exactly one or four physical pixels. The GPU draws sharp edges without interpolation. Fractional scaling like 125% or 150% requires the compositor to render the UI at a higher resolution and then downscale it. The GPU calculates intermediate pixel values to smooth the transition. This keeps window sizes manageable while making text legible.
GNOME applies fractional scaling inside your user session through mutter, the Wayland compositor. Your session reads the scale factor from dconf and applies it to all client windows. GDM operates differently. It runs as a system service before your user account loads. It starts its own X server or Wayland compositor instance with default parameters. By default, GDM ignores user-level scaling preferences. It assumes a standard 100% scale factor. You must explicitly whitelist the fractional values in the GDM configuration and force the display manager to respect them.
The scaling pipeline splits into two stages. The first stage happens at the compositor level. mutter or the X server applies a transformation matrix to every surface. The second stage happens at the client level. Applications query the scale factor and adjust their font rendering and layout accordingly. GDM only controls the first stage. If you do not whitelist the factor, the compositor refuses to apply the matrix. The login screen stays at 100% while your desktop scales independently.
The fix
Here is how to configure GDM to accept fractional scaling factors and apply them at the login screen.
First, open the GDM configuration file in a terminal editor. The file lives in /etc/gdm/, which is the correct location for user modifications. Never edit files in /usr/lib/gdm/. Those files ship with the package and get overwritten during updates.
sudo nano /etc/gdm/custom.conf
# WHY: opens the GDM override file with root privileges
# WHY: /etc/ contains persistent user changes that survive package upgrades
# WHY: nano is preinstalled on Fedora and requires no extra dependencies
The file usually contains a [daemon] section with a WaylandEnable flag. You need to add an [xserver] section below it. GDM uses this section to pass arguments to the underlying X server or Wayland session. The AllowedTis key tells GDM which scale factors are valid. Tis stands for "Transformation and Inverse Scaling". It is an internal GNOME term for the scaling matrix.
[xserver]
AllowedTis=1.0,1.25,1.5,1.75,2.0
# WHY: whitelists fractional scaling factors for the display manager
# WHY: 1.0 is 100%, 1.25 is 125%, 1.5 is 150%, and so on
# WHY: GDM will refuse to apply a scale factor not listed here
# WHY: the comma-separated list must not contain spaces or trailing commas
Save the file and exit the editor. The configuration change is written to disk, but GDM is already running in memory. You need to restart the display manager to load the new parameters. Restarting GDM drops active sessions and returns you to the login screen. Save your work before running the next command.
sudo systemctl restart gdm
# WHY: reloads the display manager with the new AllowedTis values
# WHY: drops all active user sessions and returns to the login prompt
# WHY: systemd handles the graceful shutdown and immediate restart
Log back into your desktop. Open Settings and navigate to Displays. The Scale dropdown now includes the fractional options you whitelisted. Select 125% or 150%. The change applies immediately to your session. Log out and verify that the login screen matches your desktop scale.
Verify it worked
Run a quick check to confirm GDM loaded the configuration without errors. The systemctl status command shows the current state and recent log lines in one view. Always check status before restarting services again.
systemctl status gdm
# WHY: shows whether GDM is active and running
# WHY: displays the last ten log lines to catch startup warnings
# WHY: confirms the service survived the restart cycle
Look for Active: active (running) in green. If the service failed, the output will show inactive (dead) or failed. Check the journal for specific GDM messages. The -xe flags add explanatory context and jump to the end of the log.
journalctl -xeu gdm
# WHY: filters logs to the GDM unit only
# WHY: x adds explanatory text, e jumps to the latest entries
# WHY: isolates display manager output from system noise
Verify the actual scale factor applied to your session. GNOME stores the display configuration in dconf. You can query the current scale factor directly from the command line.
gsettings get org.gnome.mutter experimental-scale-monitor
# WHY: checks if per-monitor scaling is enabled
# WHY: returns true if fractional scaling is active in the session
# WHY: confirms the compositor is using the whitelisted matrix
If the output returns true and your login screen matches your desktop, the configuration is complete. Reboot before you debug. Half the time the symptom is gone after a full power cycle.
Common pitfalls and what the error looks like
Fractional scaling introduces a few predictable failure modes. Knowing what to look for saves time when the screen behaves unexpectedly.
The most common issue is a black screen or a frozen login prompt after restarting GDM. This usually happens when the AllowedTis line contains a syntax error or an unsupported value. GDM will refuse to start the X server if the scaling matrix is malformed. You will see a blank screen with a blinking cursor in the top-left corner. Boot into a TTY by pressing Ctrl+Alt+F3, log in, and remove the malformed line from /etc/gdm/custom.conf. Restart GDM to recover.
sudo systemctl restart gdm
# WHY: reloads the display manager after fixing the config
# WHY: returns you to the graphical login screen
# WHY: avoids a full system reboot when only the config is broken
Another frequent problem is the cursor disappearing or jumping to the wrong position. This occurs when the compositor tries to scale input coordinates but the hardware acceleration driver does not support fractional transformations. NVIDIA proprietary drivers historically struggled with this on X11. Switch to Wayland if your hardware supports it. GNOME handles fractional scaling more reliably on Wayland because mutter manages the scaling pipeline directly.
You might also notice blurry text in specific applications. Electron apps and some Java programs bypass the compositor scaling and render their own UI at the native resolution. They ignore the system scale factor. You will see crisp windows next to fuzzy text boxes. This is an application-level limitation, not a Fedora configuration error. Set the environment variable GDK_SCALE=1 or GDK_SCALE=2 for those specific apps to force integer scaling.
If you see [FAILED] Failed to start GDM Display Manager during boot, your configuration file probably contains a typo. GDM validates the INI syntax before launching. Run journalctl -xeu gdm to read the exact parsing error. Fix the syntax and restart the service. Trust the package manager. Manual file edits drift, snapshots stay.
When to use this vs alternatives
Display scaling is not one-size-fits-all. Choose the approach that matches your hardware and workflow.
Use integer scaling when you want crisp edges and zero performance overhead. Use fractional scaling when you need readable text on high-density panels without doubling window sizes. Use per-application scaling when only legacy tools need adjustment. Stick to the default when your monitor is 1080p or lower. Use Wayland when you want consistent fractional scaling across the login screen and desktop. Use X11 when you rely on legacy input methods or proprietary drivers that lack Wayland support.