Index: src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonCutter.java =================================================================== --- src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonCutter.java (revision 4912) +++ src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonCutter.java (working copy) @@ -26,6 +26,7 @@ import java.util.Queue; import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; +import uk.me.parabola.imgfmt.Utils; import uk.me.parabola.imgfmt.app.Coord; import uk.me.parabola.log.Logger; import uk.me.parabola.util.Java2DConverter; @@ -91,6 +92,10 @@ // create the inner areas List innerAreas = new ArrayList<>(innerPolygons.size()+2); for (Way innerPolygon : innerPolygons) { + // store original coords of inner so that the cutting creates the same Coord instances where possible + for (Coord p : innerPolygon.getPoints()) { + commonCoordMap.put(Utils.coord2Long(p), p); + } // don't need to clip to the bounding box because // these polygons are just used to cut out holes innerAreas.addAll(createAreas(innerPolygon, false));