Вот так я получаю корректные данные позиции курсора (не менял масштаб):
self.x = Math.round(x_scale.invert(d3.mouse(this)[0]-50));
self.y = Math.round(y_scale.invert(d3.mouse(this)[1]-50));
Как получить корректные значения после увеличения/уменьшения масштаба изображения?