Вы не должны устанавливать ширину / высоту холста через CSS. Это заставляет холст растягиваться, а не повышать разрешение. Это означает, что, хотя координаты верны, они визуально окажутся где-то еще.
Например, координата х 100
будет растянута, чтобы визуально была координатой х 200
(или что-то еще; по крайней мере, она будет больше 100
, поскольку она была растянута).
Вместо этого используйте:
<canvas id="canvas" width="700" height="420" />
и удалите width: 100%
в CSS.
http://jsfiddle.net/euXJC/1/