Show correctly a tilemap made with Tiled issue

Hi, I have the next problema with MonoGame.Extended and his 2D camera (OrthographicalCamera):

Want show a tilemap made in Tiled (1.3.1 version) using a x2 zoom as if it were its normal size and showing with OrtographicalCamera from MonoGame.Extended.

The problem is that the tiles are displayed misshappen.

A pair of images about that:

As should be displayed (screen capture from Tiled program):

As the game actually displayed (red rectangles where are the deformed tiles):

Here the display code:

public class Game1 : Game
    GraphicsDeviceManager graphics;
    SpriteBatch spriteBatch;

    // Contain screen resolution (640x480).
    public Rectangle screenRectangle;

    // From MonoGame.Extended
    public static TiledMapRenderer mapRender;
    // Main map.
    public static TiledMap map1;

    DefaultViewportAdapter viewportAdapter;

    Matrix transformMatrix;
    Matrix projectionMatrix;
    // Game cameras.
    // This for show the level (with zoom).
    public static OrthographicCamera gameCamera2D;
    // This for show the characters (without zoom).
    public static OrthographicCamera charactersCamera2D;

    Player player1;
    protected override void Initialize()
        // Viewport for game cameras.
        viewportAdapter = new DefaultViewportAdapter(
        gameCamera2D = new OrthographicCamera(viewportAdapter);            
        charactersCamera2D = new OrthographicCamera(viewportAdapter);           
        // Instancied the player (is the guy with blue jacket in the pictures).
        player1 = new Player();
        var initialPos = new Vector2(40, 40);
        player1.SpritePlayer.Position = initialPos;


    protected override void LoadContent()
        spriteBatch = new SpriteBatch(GraphicsDevice);


       map1 = Content.Load<TiledMap>("GameMaps/Map1/retroDarkRoom");            

       mapRender = new TiledMapRenderer(GraphicsDevice, map1);           

    protected override void Update(GameTime gameTime)
        // Update player logic.                       

        // Get the player position for pass to game cameras.
        var playerCameraPosition = new Vector2(
            (int)player1.SpritePlayer.Position.X, (int)player1.SpritePlayer.Position.Y
        // Cameras follow the player.


    protected override void Draw(GameTime gameTime)

        // Get the transform matrix of Ortographical camera.
        transformMatrix = gameCamera2D.GetViewMatrix();

        // Get the projection matrix.
        projectionMatrix = Matrix.CreateOrthographicOffCenter(
            , screenRectangle.Width // 640
            , screenRectangle.Height // 480
            , 0
            , 1
            , 0
        // SpriteBatch of the level (with zoom)
            transformMatrix: transformMatrix 
            , samplerState: SamplerState.PointClamp                

        // SpriteBatch for the sprites.
            transformMatrix: charactersCamera2D.GetViewMatrix()
            , samplerState: SamplerState.PointClamp                

        // Zoom in the map.

        // This avoid a display tiles error (not that of this topic).
        mapRender.Draw(ref transformMatrix, ref projectionMatrix, null, 0);




    // This function set the camera zoom.
    private void ZoomMap(int levelOfZoom) {
        switch (levelOfZoom) {
            case 1:
                // Normal zoom.
                gameCamera2D.Zoom = Convert.ToInt32(1);
            case 2:
                // x2 zoom.
                gameCamera2D.Zoom = Convert.ToInt32(2);
                gameCamera2D.Zoom = Convert.ToInt32(1);

Beforehand thank you very much.

You should use a render target that is the same size as your map

initialize render target in contructor (important, do not initialize render target for evert draw call)
_renderTarget = new RenderTarget2D(graphicsDevice, TiledMap.WidthInPixels, TiledMap.HeightInPixels);

Draw Function

// First set render target

// Draw your map stuff here

// Restore render target


// Draw your render target

spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend,transformMatrix: camera.GetViewMatrix(), samplerState: SamplerState.PointClamp);

spriteBatch.Draw(_renderTargetBack, new Vector2(0, 0), _renderTargetBack.Bounds, Color.White, 0,Vector2.Zero,Vector2.One, SpriteEffects.None, 1);

Don’t worry now, I find the solution:
I make my own TiledMap render using TiledSharp like this webpage:

But thanks @janfokke for the answer.

@davidgd72k Thanks for sharing. It is probably it worth having multiple type of rendering techniques; one using SpriteBatch and one using custom primitives. I think this would solve the problem better since you can make the choice of which one to use. I will keep this in mind in the next iteration of MonoGame.Extended.

The original problem you described as been reported before. I believe it has to do with how the texture coordinates (UV) are made; it seems that the sub-texture is not sampled perfectly. Further research needs to be made.