Vector shapes must have proper, clockwise, winding. If a shape is not properly formed (with clockwise winding), the rendering can be topologically incorrect. Therefore, try enforcing the winding check to ensure there are no shapes that are wound in the wrong (anti-clockwise) direction. For example, in this call, the last parameter (True) will guarantee a winding check:
shp := topologyObj.Combine( shpA, shpB, gisTopologyCombineTypeSymmetricalDifference, True ) ;
The winding check is set to False by default because good vector datasets contain only properly formed shapes, all wound in the clockwise direction. Enforcing the winding check at all times would unnecessarily degrade performance.