So, Using: Xft.dpi: 220 GDK_SCALE=2 GDK_DPI_SCALE=0.5 QT_AUTO_SCREEN_SCALE_FACTOR=1 xrandr --output DP1 --scale 2x2 --auto --pos 0x0 --primary \ --output eDP1 --scale 1x1 --mode 3840x2160 --pos 5120x0 I noticed that Qt5 apps look now fine on my external screen (Low DPI) but now super huge on my laptop screen HiDPI. I think the reason I avoided using QT_AUTO_SCREEN_SCALE_FACTOR and set that to 0 was because it was being scaled twice (hence the super hugeness on my laptop) as apparently it looks at the DPI in xrdb, but I need that for rxvt, i3 etc. Without doing what you've done and dropping the resolution on my HiDPI screen. I found this, using: GDK_SCALE=2 GDK_DPI_SCALE=0.5 QT_AUTO_SCREEN_SCALE_FACTOR=0 QT_SCREEN_SCALE_FACTORS=2 Single Screen Laptop: xrandr --output eDP1 --scale 1x1 --mode 3840x2160 \ --output DP1 --off All good. Single Screen External: xrandr --output eDP1 --off \ --output DP1 --scale 2x2 --mode 2560x1600 All good. Both screens! xrandr --output eDP1 --scale 1x1 --mode 3840x2160 --pos 5120x0 --primary \ --output DP1 --scale 2x2 --mode 2560x1600 --pos 0x0 Small fonts on external screen with Qt5. xrandr --output eDP1 --scale 1x1 --mode 3840x2160 --pos 5120x0 \ --output DP1 --scale 2x2 --mode 2560x1600 --pos 0x0 --primary Small fonts on laptop using Qt5. So it seems tied to Primary switch as to which screen it scales for. Fortunately when using dual monitors I basically never use virtualbox, wireshark or nvim-qt on the laptop screen. Incidentally if no primary switch is used the eDP1 becomes primary. -- Tyler