Scaling in Protools Windows

I’ve run into an issue on Windows with display scaling enabled, specifically when comparing Pro Tools to other hosts like REAPER.

It appears that in Pro Tools, the plugin UI is rendered as if it’s operating at the monitor’s native resolution, and then Pro Tools applies an additional scaling pass after the plugin has rendered. This results in the rendered frame being scaled up by the host, which causes visible stretching and loss of image quality.

For example, using:

const auto scale = g.getInternalContext().getPhysicalPixelScaleFactor();

with the same Windows display scaling settings:

  • REAPER reports a scale of ~0.50
  • Pro Tools reports a scale of ~0.33

The practical effect is that in Pro Tools the plugin appears to render at a much smaller size, and is then blown up by the host, leading to noticeably softer / lower-quality rendering compared to REAPER.

Is this expected behaviour in Pro Tools on Windows, and is there any recommended way in JUCE to detect or mitigate this kind of post-render host scaling?