I'm working on a VB.NET WinForms app (.NET Framework 4.8) and seeing inconsistent scaling between forms. I develop on my work laptop using a Remote Desktop Connection.
This problem began when I changed the "System > Display > Scale" on my local PC.
I now have:
- Local PC: 200%
- Remote laptop (RDP): 100%
After making those changes, the app/parent form appears correct on the remote machine — until I load certain child forms.
- One child form loads normally and does not affect scaling
- Another child form causes the parent form to rescale to ~ 50% (i.e., 100 / 200)

I added this to app.config:
<system.windows.forms.applicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
</system.windows.forms.applicationConfigurationSection>
I have since manually normalized all forms to:
AutoScaleDimensions = New SizeF(96.0!, 96.0!)
AutoScaleMode = AutoScaleMode.Dpi
Note: the AutoScaleDimensions property appears to change automatically when modifying forms using the designer while the scales differ. It also seems to apply a scale factor to the Me.ClientSize property based on the form's overall Me.Size.
E.g.
Me.ClientSize = New System.Drawing.Size(990, 718)
This cannot be normalized since all of my forms' Size values vary.
This seems to work as long as both systems are scaled to 100% but breaks when they are different.
Question
What is the proper way to ensure consistent DPI scaling in a WinForms app based on each users' system settings?
Edit
This is a legacy application built using Visual Studio 2017 targeting .NET Framework 4.8.
One additional detail that may be relevant: the scaling issue only occurs with some child forms, while others load and behave correctly without affecting the parent form’s scaling. This inconsistency suggests that certain child forms may inherit from different base classes or have differing scaling-related configurations (e.g., AutoScaleMode, AutoScaleDimensions, or DPI awareness settings), which could be contributing to the problem.
.designer.csfiles (using the find & replace utility), then reopen the FormsAutoScaleModerows, or should I also remove theAutoScaleDimensionsandClientSizerows as well? Thanks.AutoScaleDimensionsline" (notAutoScaleMode, that would be silly. Though you could also make a test setting it toNone). Just that one line