I’m not a GIS person, this is really just a side task, so I probably have terminology/strategy incorrect, I would ask that you please bear with me. I have the following requirements for a Qt-based C++ application that I’m working on: Allow the overlay of other vector data on top of the map (as a test, I have a shapefile of world boundaries I got from Natural Earth. Preprocessing of the vector data is possible in my application, so I decided to convert the EPSG:4326-projected Natural Earth shapefile to an SVG file (which I can render most easily in my application). I have done so using Kartograph. Its configuration looks like this: I believe this should take the input shapefile, reproject it to Spherical Mercator (which should match the projection of the OSM tiles), and generate a corresponding SVG. This all ‘works,’ but the projection of the SVG file seems to be a bit off, it seems. When I overlay the SVG features atop the OSM image tiles, they don’t quite line up, like this: The black one-pixel-wide lines are rendered from the SVG. I’m wondering if there’s something conceptually that I’m doing wrong in the preprocessing steps. I think that I’m rendering the SVG tiles correctly (I’m treating the SVG document as a square image that is 360 degrees wide and 170.1022 degrees tall and just slicing out the square portion of that image that corresponds to each tile that I need). However, since GIS isn’t my job, I’m sure my ignorance could be leading me astray somewhere. I decided to try some alternative tools to see if I had a problem in my workflow. At the suggestion of one of the commenters above, I instead did the following: This resulted in an SVG file that rendered properly in my application. I’m assuming there must be either a bug in Kartograph, or I may have been driving it incorrectly. I think I was using it correctly, but its documentation isn’t as detailed as it could be. Source.