1. To avoid confusion removed second setting of ImageJob: settings j.Settings["cropxunits"] = etc. is already being done in the constructor.

2. Changed the embedded javascript to call webcropimage(image, settings) only when the image is loaded. Images load asynchronously and firing webcropimage(image, settings) lead to a race condition.
3. Added NLog logging via NuGet
4. Reversed earlier change to jquery.jcrop.js: $origimg[0].width back to $origimg.width() - number 2 above fixed the real problem.