Core: Use a more exhaustive intersect

Instead of just intersecting the bounding bboxes, intersect the actual
shapes.