I am attaching a fixed version which I tested on Windows 96ppi and 144ppi, macOS and Linux to have a correct layout (except for Linux/gkt3 which does not calculate the form size correctly).
The issue is that the application is not designed in a way that is compatible with different widgetsets and screen resolutions. You place and arrange the controls by simply dropping and moving them with the mouse. This is very convenient but causes overlapping controls when the font size changes on another widgetset or at another screen resolution. You must use the Anchor Editor to anchor the controls to their container and to their neighboring controls so that the layout is able to adjust itself. And you must use AutoSizing so that the control containers can adjust their size automatically. Please read
https://wiki.freepascal.org/Anchor_Sides and
https://wiki.freepascal.org/Autosize_/_Layout to learn how to use the anchor editor and autosizing. It is a bit stubborn in the beginning, but now that I mastered it I would never miss it. It is one of the most important gems in the Lazarus IDE!
Adjustment to varying screen resolution is handled automatically by the IDE when you check the box "Use LCLScaling" in the project options. In your case, however, it is a bit more difficult because your images do not scale. The button images can handle this when their images are contained in auto-scaled imagelists and are provided in several resolutions. And there is the palette image which is also provided only in a single size. Therefore I had to calculate some sizes manually - this is on the OnActivate event handler of the form.
The drawing panel imgDest should be scaled also manually, but this happens at several places and I did not want to dive into your program so deeply.
I also fixed a memory leak caused by the "nBrush" which is created in FormCreate but was never destroyed.