Ben,
I think that your issue is similar to the one described in the Proj4 website in FAQ: "Changing Ellipsoid / Why can't I convert from WGS84 to Google Earth / Virtual Globe Mercator?"
trac.osgeo.org/proj/wiki/FAQ#HowdoI...withPROJ.4
So, with that in mind, I used the code as below and you can see the result in the screen shot. (the code is for the Desktop edition but the projection issue is the same for all the editions). It matches pretty well with Open Street Map. I updated the internal issue MS3-6754 so that the development team is aware of my findings and do the appropriate change to fix the bug.
winformsMap1.MapUnit = GeographyUnit.Meter;
OpenStreetMapOverlay openStreetMapOverlay = new OpenStreetMapOverlay();
winformsMap1.Overlays.Add(openStreetMapOverlay);
Proj4Projection proj4 = new Proj4Projection();
proj4.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(27700);
//For the Spherical Mercator projection, we need to apply no null grid shift:
proj4.ExternalProjectionParametersString = "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs";
ShapeFileFeatureLayer shapeFileFeatureLayer = new ShapeFileFeatureLayer(@"..\..\data\sample.shp");
shapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.CreateSimpleLineStyle(GeoColor.StandardColors.Red,
3, true);
shapeFileFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
shapeFileFeatureLayer.FeatureSource.Projection = proj4;
LayerOverlay layerOverlay = new LayerOverlay();
layerOverlay.Layers.Add(shapeFileFeatureLayer);
winformsMap1.Overlays.Add(layerOverlay);
shapeFileFeatureLayer.Open();
winformsMap1.CurrentExtent = shapeFileFeatureLayer.GetBoundingBox();
shapeFileFeatureLayer.Close();
winformsMap1.Refresh();