Thanks for your patience. We’ve now published a series of patches intended to address and improve this behaviour.
This commit adds a new mechanism for overriding the platform scale factor detected by the ComponentPeer. Applications/plugins should generally avoid calling this function directly, and instead allow JUCE’s plugin wrappers to call this function when appropriate.
This subsequent change updates the plugin wrappers to call the new ComponentPeer function. Plugins will use the detected native platform scale factor by default, but will override this scale factor if a new factor is requested by the plugin host. Secondary windows (tooltips, popup menus, top-level windows, etc.) created by plugins will continue to match the scale of the target component, if specified, and will use the native platform scale factor otherwise.
These changes should make scaling behaviour in plugins much more consistent across platforms. However, the changes are fairly significant so we recommend testing plugin UIs (especially those that create new top-level windows) thoroughly after applying the new changes. It may also be worth checking your code for places where window-positioning logic is special-cased for Windows, and testing whether this additional logic is still necessary.
Of course, we’d still recommend avoiding additional top-level windows in plugins whenever possible.
