Currently the clone of a PlanarFigure just does a simple raw copy of PlaneGeometry*. But the clone does not hold any managed pointer to the PlaneGeometry because the managed pointer to BaseData::Geometry does point to the clone of the geometry.
As soon as the original PlanarFigure is destroyed its clone is in an invalid state as the clone's PlaneGeometry points to garbage.
Proposed solution: in the copy constructor of planarfigure, explicitly reset the plane geometry based on its own geometry (like SetPlaneGeometry() would do).