Make canvas offset determination more robust

Use jQuery offset approach for canvasX/canvasY determination (see http://stackoverflow.com/questions/13789879/getting-elements-global-document-coordinates-in-dart-aka-some-offset) - targeted for M6 but easy enough to implement here.