Support for high DPI displays

I got the chance to test Paraview on a 3840x2160 32" display using a Windows 10 machine. To see things well, I’ve set a 200% upscaling in the Windows display options. Unfortunately, the upscaling does not work well in Paraview, some elements are upscaled, like the text in the top menu, while most others are not. In light of the growing popularity of 4K displays, this is quite unfortunate and should perhaps be prioritized.

4 Likes

I’d like to add the odd experience I have with each new ParaView release on a modern Windows 10 laptop. It appears that high-DPI screens are not well supported, and there is no obvious setting to adjust for the UI scaling inside ParaView (but there might be a Qt workaround). The only DPI setting is for 2D annotations, but even that seems not working correctly with high-DPI, for example for my screen at 280 dpi.

For me, the 5.8.0 release displayed quite Ok:

The 5.8.1 release got a little worse - too large in some, and too small in other GUI areas:

The 5.9.0 RC2 release GUI looks way too big, scaled up everywhere:

There is probably a way to override the DPI scaling using Windows “compatibility” properties, but it would be great if ParaView would solve this once and for all, or provide its own setting to customize the GUI scaling for modern displays.

Actually, out HIDPI supoprt is supposed to get better and better. This in strange. What is your resolution and DPI settings in windows ?

FYI @cory.quammen

Hi, I use the recommended system settings, see screenshot.

Quick update: I’ve enforced a custom Hi-DPI scaling for ParaView 5.9 to use “system (enhanced)”, which gives overall good appearance (below) similar to 5.8.0 (see above), with the slight disadvantage of blurry fonts in some cases.

Looks Ok for me as a workaround:

I can confirm this and the resolution, this should go into a FAQ topic.

Hi Mathieu, just to let you know, I’ve checked again with he final release of ParaView 5.9.0, and that looks Ok without any overrides on Win 10 with a 4k screen. So there is definitely good progress.

What I still found unreliable is the “DPI” setting in the preferences, which is supposed to control 2D annotation text sizes. It obviously assumes that ParaView is used on a single monitor with fixed DPI. But, I’m constantly working with a second monitor, and move the ParaView window between the screens with different DPI, so that setting would need to be adjusted every time. Ideally, the DPI setting should be replaced by a “Percentage” (like in Win 10 display settings) to respect changing DPI within a session. Not sure if ParaView UI is prepared for such dynamic changes. :slight_smile:

Not yet ready for it sure, but getting close to.

Update (for ParaView 5.9 at least):

Recent Qt versions support a global “scaling factor” environment variable called QT_SCALE_FACTOR that works for all Qt applications and scales the UI according to the numeric value given, like

QT_SCALE_FACTOR 0.8

shrinking the ParaView UI nicely to about 80% of the original size. That value works best for me, btw.
There is even another per-screen environment setting QT_SCREEN_SCALE_FACTORS that allows to tune scaling for every screen individually. This also works with ParaView 5.9.

Worth to note, that those settings DO NOT affect the ParaView internal DPI setting for its rendering of 2D annotations. This would need to be fixed in ParaView at some point.

Using override “System(Enhanced)” is absolutely not a solution, as it does pixel-level downscaling and ends up in ugly, blurred UI fonts. NoGo!
On my side(Windows 10) with a 4k screen @168dpi, which requires a 150% scaling on this display, Paraview 5.9 as well as 5.10 RC is quite overscaled without furhter actions.

Please compare Window tile font or standard Settings window with Paraview UI fonts/icons.

Therefore, I’m currently setting compatibility hidpi scaling override to “Application” and use env variables QT_AUTO_SCREEN_SCALE_FACTOR=0 or (legacy) QT_FONT_DPI to avoid exagerated UI scaling and maintain crital clear UI fonts.
But I don’t like this approach, as I need to use a wrapper around Paraview. I cannot set any of these these variables on system levels, because a lot of other Qt apps are affected in an unfavourable manner.
Is there a way to use local Qt config files inside the paraview installation, or applications specific settings (e.g. registry) to get this UI scaling fixed without affecting other Qt apps or using a wrapper process like cmd.exe (with annoying window, etc.)?
Regards,
Toby

PS: Using QT_SCREEN_SCALE_FACTORS or QT_SCALE_FACTOR seems to generate some artefacts at fonts and icons. Pixel-level scaling post original render???
Using the two env variables listed above seems to avoid this. And once icon size is fixed, fonts can be readjusted with the paraview setting to override UI font size (instad of system default)

Set the env var in a shortcut when running pv ?

How to do this on Windows?

C:\Windows\System32\cmd.exe /c "SET QT_AUTO_SCREEN_SCALE_FACTOR=0 && START /D ^"C:\Program Files\ParaView\bin^" paraview.exe"

Not tested, adapted from: How to set environment variables in windows shortcut? | NetLicensing

Thanks a lot Mathieu !
I forgot about using START to get rid of the cmd.exe process. And when setting it to run “minimized” the binking cmd.exe window is gone, too.

Is this a Qt5(.x?) on Windows issue, or something you can fix inside Paraview?
I’m asking, because other Qt5 based apps like Avidemux, LibreCAD, VLC do scale well right out of the box without setting any env variables.

Is this a Qt5(.x?) on Windows issue, or something you can fix inside Paraview?

This is complex to fix and require all icons to be converted to svg afaiu, which is an ongoing effort. maybe @cory.quammen knows more.