void canvas_MouseMove(object sender, MouseEventArgs mea) { try { Point pos = mea.GetPosition(canvasRel); // first get it in pixels, relative to center point: double x = pos.X - canvasRel.ActualWidth / 2.0d; double y = -(pos.Y - canvasRel.ActualHeight / 2.0d); // and now convert to meters, relative to robot center: x *= metersPerPixelX; y *= metersPerPixelY; MapperVicinity mapperVicinity = CurrentMapper; GeoPosition gp = new GeoPosition(mapperVicinity.robotPosition); gp.translate(new Distance(x), new Distance(y)); RoutedEventArgsMouseMoved newEventArgs = new RoutedEventArgsMouseMoved(MapperViewControl.MouseMovedEvent) { xMeters = x, yMeters = y, geoPosition = gp }; RaiseEvent(newEventArgs); } catch { } }