rasmuffin, OK, attempt #2. This code allows continuous maps as per the work item #13300.

Core.FindTilesAround():

...

Point p = centerOfMap;
p.X += i;
p.Y += j;

while (p.X < minOfTiles.Width) { p.X += (maxOfTiles.Width+1); }
while (p.X > maxOfTiles.Width) { p.X -= (maxOfTiles.Width + 1); }

if (p.X >= minOfTiles.Width && p.Y >= minOfTiles.Height && p.X <= maxOfTiles.Width && p.Y <= maxOfTiles.Height)
{
if (!list.Contains(p)) { list.Add(p); }
}

...


GMapControl.DrawMapGDIplus():

void DrawMapGDIplus(Graphics g) {
Core.sizeOfMapArea.Width +=1; // the sizeOfMapArea needs to be expanded by 1 if map is zoomed all the way out.
Core.sizeOfMapArea.Height +=1; //
for(int i = -Core.sizeOfMapArea.Width; i <= Core.sizeOfMapArea.Width; i++)

...

...

Core.tilePoint = Core.centerTileXYLocation;
Core.tilePoint.X += i;
Core.tilePoint.Y += j;

GMap.NET.Point tileToDraw = Core.tilePoint;

while (tileToDraw.X < MinOfTiles.Width) { tileToDraw.X += (MaxOfTiles.Width + 1); }
while (tileToDraw.X > MaxOfTiles.Width) { tileToDraw.X -= (MaxOfTiles.Width + 1); }

{
Tile t = Tiles[tileToDraw];
....
}

PlateCarreProject.FromLatLngToPixel():

...
Point ret = Point.Empty;

//lat = Clip(lat, MinLatitude, MaxLatitude);
//lng = Clip(lng, MinLongitude, MaxLongitude);

while (lng < MinLongitude) { lng += 360; }
while (lng > MaxLongitude) { lng -= 360; }

Size s = GetTileMatrixSizePixel(zoom);
...

MercatorProjection.FromPixelToLatLng():

...
//double xx = (Clip(x, 0, mapSizeX - 1) / mapSizeX) - 0.5;
//double yy = 0.5 - (Clip(y, 0, mapSizeY - 1) / mapSizeY);

double xx = ((double)x / mapSizeX) - 0.5;
double yy = 0.5 - ((double)y / mapSizeY);

ret.Lat = 90 - 360 * Math.Atan(Math.Exp(-yy * 2 * Math.PI)) / Math.PI;
ret.Lng = 360 * xx;

while (ret.Lng < MinLongitude) { ret.Lng += 360; }
while (ret.Lng > MaxLongitude) { ret.Lng -= 360; }
...

That should do it. Let me know if it doesn't work to your expectations. Thanks!