The hit testing is based on the rendering of the element so you should either measure and arrange shape. e.g.
shape.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
shape.Arrange(new Rect(shape.DesiredSize));
Or you could just use the FillContains method of the Geometry. e.g.
var result = shape.Data.FillContains(ToPoint(target));