Hi Zbynek,
In your AssistedColorCalibrationInstance class, you have declared all floating point process parameters as double, but the corresponding parameters have been implemented as MetaFloat descendants. This means that the Core application expects to read float parameters when you pass their addresses from AssistedColorCalibrationInstance::LockParameter().
As double and float are not binary compatible, the Core application is not acquiring AssistedColorCalibration parameters with their correct values —just drag one instance of AssistedColorCalibration to ProcessExplorer and look at the automatically generated JavaScript or XPSM code.
Note that encapsulation of your process instances works correctly on the platform, e.g. you can export and import process icons from/to your process interface. This works because instance encapsulation is transparent to process implementations in PixInsight (here you can see the OO design model in action
); the Core application just encapsulates what you tell it is one of your instances, as an abstract object, and relies on your process implementation to manage it.
However, when you load an XPSM file your process parameters are interpreted from source. As the XPSM contains strange parameter values, all out-of-range parameter values are replaced automatically with the corresponding minimum or maximum values (as declared by your metaparameters). This is done as part of a security layer to protect the platform (to some extent) from incorrect process behavior.
So the solution is as simple as replacing double by float in your class declaration
As soon as we have an official definition of PixInsight Repositories (I am waiting to solve some issues on Windows to release a new version), you can create your own repository, or if you prefer, I can fix the source code and publish an official update. Let me know what you prefer.