I have a MapServer based application using OpenLayers to display above OpenStreetMap what MapServer render from a PostGIS Database.

It is loading in the right place, but it keeps resizing when zoom in or out in OpenLayers.

This is when the map finish to load, any zoom is applied:

[![layer loaded correctly][1]][1]


And this is when I zoom in on map:

[![layer auto resized to fit the screen][2]][2]


  [1]: https://i.sstatic.net/gkT2p.jpg
  [2]: https://i.sstatic.net/1G8dp.jpg

What I need? I need something to make it stop resizing this way. The map CAN NOT be able to fit the screen in this non sense shape. As you can see in the first image, it is respecting the city shape, but the second image (with zoom in) it does not respect it anymore. I need it keeps respecting the real city shape all the time no matter how many zoom levels I put in.

This is my map html

    <html>
      <head>
        <title>Guarulhos</title>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="https://openlayers.org/en/v4.4.2/css/ol.css" type="text/css">
        <link href="https://cdn.jsdelivr.net/npm/ol-geocoder@latest/dist/ol-geocoder.min.css" rel="stylesheet">
        <link rel="stylesheet" href="css/mapa.css">
    
        <!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->
        <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>
        <script src="https://openlayers.org/en/v4.4.2/build/ol.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/ol-geocoder"></script>
        <script src="js/mapa.js"></script>
      </head>
    
      <body>
        <div class="navbar">
          <div class="img">
            <img src="./images/logo_guarulhos.png" alt="Unidesk" class="img-responsive logo">
          </div>
          <div class="user">
            Olá <?php echo $user['name']?><br>
            <div class="btn-lgout">
              <a href="logout.php">Sair</a>
            </div>
          </div>
        </div>
    
        <div id="mapholder">
          <div id="map" class="map"></div>
          <div id="mouse-position"></div>
        </div>
    
        <div id="popup" class="ol-popup">
          <a href="#" id="popup-closer" class="ol-popup-closer"></a>
          <div id="popup-content"></div>
        </div>
    
        <input type="text" id="mapext" value="[mapext]">
    
        <script type="text/javascript">
          var container = document.getElementById('popup');
          var content = document.getElementById('popup-content');
          var closer = document.getElementById('popup-closer');
          var myurl = 'http://localhost/cgi-bin/mapserv.exe?map=../htdocs/Guarulhos/mapfile.map';
          var exurl = 'https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer';
    
          var extent = ol.proj.transformExtent([-46.570612, -23.508703, -46.357596, -23.308953], 'EPSG:4326', 'EPSG:3857');
          var extent1 = ol.proj.transformExtent([-46.556415 -23.426757 -46.449907 -23.320249], 'EPSG:4326', 'EPSG:3857');
    
          var overlay = new ol.Overlay(/** @type {olx.OverlayOptions} */ ({
            element: container,
            autoPan: true,
            autoPanAnimation: {
              duration: 250
            }
          }));
    
          var geocoder = new Geocoder('nominatim', {
            provider: 'osm',
            // key: 'mapquest',
            lang: 'pt-BR', //en-US, fr-FR
            placeholder: 'Digite um endereço',
            targetType: 'text-input',
            limit: 5,
            keepOpen: true
          });
    
          closer.onclick = function() {
            overlay.setPosition(undefined);
            closer.blur();
            return false;
          };
    
        var osm = new ol.layer.Tile({
          source: new ol.source.OSM()
        });
        // new ol.layer.Image({//this is for testing
        //   source: new ol.source.ImageArcGISRest({
        //     ratio: 1,
        //     params: {},
        //     url: exurl
        //   })
        // });
        var guarulhos = new ol.layer.Image({ //this is my map
          source: new ol.source.ImageWMS({
            ratio: 1,
            params: {
              'LAYERS': 'face_guarulhos, pg_trechos',
              'mode': 'map',
            },
            serverType: 'mapserver',
            url: myurl,
            projection: 'EPSG:4326'
          }),
          extent: extent,
          name: 'face_guarulhos'
        });
    
          var mousePositionControl = new ol.control.MousePosition({
            coordinateFormat: function(coordinate) {
              lon = coordinate[0];
              lat = coordinate[1];
              lon = lon % 360;
              if (lon > 180) {
                lon = lon - 360;
              } else if (lon < -180) {
                lon = 360 + lon;
              }
              modifiedCoordinate = [lon, lat]
              return ol.coordinate.format(modifiedCoordinate, "{x}, {y}", 6);
            },
              projection: 'EPSG:4326',
              // comment the following two lines to have the mouse position
              // be placed within the map.
              className: 'custom-mouse-position',
              target: document.getElementById('mouse-position'),
              undefinedHTML: '&nbsp;'
          });
    
          var map = new ol.Map({
            controls: ol.control.defaults({
      	      attributionOptions: /** {olx.control.AttributionOption} */({
      		      collapsible: false
      	      })
            }).extend([mousePositionControl]),
            layers: [osm, guarulhos],
            target: 'map',
            projection: 'EPSG:3857',
            overlays: [overlay],
            maxExtent : ol.extent.boundingExtent(extent)
          });
    
          map.getView().fit(extent, map.getSize());
          map.getView().setResolution(map.getView().getResolutionForExtent(extent, map.getSize()));
          map.addControl(geocoder);
    
          geocoder.on('addresschosen', function(evt){
            var coord = ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326');
            if(testarRange(coord)){
              getInfoPoint(evt);
            }else {
              alert("Fora dos limites!");
              var zoom = map.getView().getZoom();
              var centro = map.getView().getCenter();
              map.getView().setZoom(zoom).setCenter(centro);
            }
            // overlay.setPosition(coord);
          });
    
          map.on('click', function (evt) {
            var coord = ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326');
            if(testarRange(coord)){
              getInfoPoint(evt);
    
              // var rome = new ol.Feature({
              //   geometry: new ol.geom.Point(ol.proj.fromLonLat(coord))
              // });
              //
              // rome.setStyle(new ol.style.Style({
              //   text: new ol.style.Text({
              //     text: 'Hello',
              //     scale: 1.3,
              //     fill: new ol.style.Fill({
              //       color: '#000000'
              //     })
              //   })
              // }));
              //
              // var vectorSource = new ol.source.Vector({
              //   features: [rome]
              // });
              //
              // var vectorLayer = new ol.layer.Vector({
              //   source: vectorSource,
              //   name: 'marker'
              // });
              //
              // map.getLayers().forEach(element => {
              //   if(element.get('name') === 'marker'){
              //
              //   }
              // });
              //
              // map.addLayer(vectorLayer);
              console.log(map.getLayers());
            }else {
              alert("Fora dos limites!");
            }
          });
    
          map.on('moveend', (function(){
            var mapext = sessionStorage.getItem("mapext");
            console.log(mapext);
          }));
    
          function testarRange(coord) {
            var lon = coord[0]; //longitude
            var lat = coord[1]; //latitude
            if(lon >= -46.570612 && lon <= -46.357596 && lat >= -23.508703 && lat <= -23.308953){
              return true;
            }else {
              return false;
            }
          }
    
          function getInfoPoint (evt) {
              var coordinate = evt.coordinate;
              // var data = {'lon': coordinate[0], 'lat': coordinate[1]};
              var data = {'lon': lon, 'lat': lat};
              $.ajax({
                  type: "POST",
                  url: 'coordinates.php',
                  data: data,
                  success: function(data)
                  {
                    var point = JSON.parse(data);
                    content.innerHTML ="<label class='top'> Informações </label><br/>"+
                    "<label class='left'>Quadra</label>"+
                    "<label class='right'>"+ point.quadra +"</label> "+
    
                    "<label class='left'>Valor</label>"+
                    "<label class='right'>"+point.valor+"</label>"+
    
                    "<label class='left'>Face</label>"+
                    "<label class='right'>"+point.face+"</label>"+
    
                    "<label class='left'>Folha</label>"+
                    "<label class='right'>"+point.folha+"</label>"+
    
                    "<label class='left'>Parâmetro</label>"+
                    "<label class='right'>"+point.parametro+"</label>";
    
                    overlay.setPosition(coordinate);
                    // console.log(point);
                  }
              });
            }
        </script>
      </body>
    
    </html>



And this is my mapfile

        MAP
    	NAME "guarulhos"
    	EXTENT -46.570612 -23.508703 -46.357596 -23.308953
    	#EXTENT 339574.172100 7399304.302223 361316.525900 7421573.107621
    	SIZE 800 800
    
    	QUERYMAP
    		STATUS on
    		STYLE normal
    	END
    
    	UNITS METERS
      SHAPEPATH "data/"
      IMAGECOLOR 155 155 155
    
      OUTPUTFORMAT
        NAME "png"
        DRIVER AGG/PNG
        MIMETYPE "image/png"
        IMAGEMODE RGB
        EXTENSION "png"
        FORMATOPTION "GAMMA=0.75"
        TRANSPARENT ON
      END
    
    #  SCALEBAR
    #      IMAGECOLOR 255 255 255
    #      LABEL
    #          COLOR 0 0 0
    #          SIZE SMALL
    #      END
    #      SIZE 150 5
    #      COLOR 255 255 255
    #      BACKGROUNDCOLOR 0 0 0
    #      OUTLINECOLOR 0 0 0
    #      UNITS kilometers
    #      INTERVALS 5
    #      STATUS EMBED
    #  END
    
      LEGEND
        STATUS EMBED
        POSITION UL
        KEYSIZE 18 12
        LABEL
          TYPE BITMAP
          SIZE MEDIUM
          COLOR 255 0 0
        END
      END
    
      WEB
        TEMPLATE "template.html"
    		IMAGEPATH "/ms4w/tmp/ms_tmp/"
        IMAGEURL "/ms_tmp/"
    		METADATA
    			"wms_title" "wms guarulhos"
    			"wms_onlineresource" "localhost/cgi-bin/mapserv.exe?map=../htdocs/Guarulhos/mapfile.map"
    			"wms_srs" "EPSG:4326 EPSG:3857"
    			#"wms_srs" "EPSG:31983"
    		END
      END
    
    	PROJECTION
    		"init=epsg:4326"
    		#"init=epsg:31983"
    	END
    
      LAYER
        NAME face_guarulhos
        TYPE line
        CONNECTIONTYPE postgis
        CONNECTION "db stuff"
        DATA "geomlatlon from ctageo.face_guarulhos"
    		LABELITEM "vu_2017_uf"
        STATUS default
    
    		METADATA
    			"wms_title" "face_guarulhos"
    		END
    
        CLASS
          NAME "Faces Guarulhos"
    			OUTLINECOLOR 139 134 130
          COLOR 255 145 145
    
    			LABEL
    	      COLOR 132 31 31
    	      SHADOWCOLOR 218 218 218
    	      SHADOWSIZE 2 2
    	      TYPE truetype
    	      #FONT "sans"
    	      SIZE 12
    	      ANTIALIAS TRUE
    	      POSITION CL
    	      PARTIALS FALSE
    	      MINDISTANCE 300
    	      BUFFER 4
    	    END
        END
    
      END
    
    	LAYER
    		NAME pg_trechos
    		TYPE line
    		CONNECTIONTYPE postgis
    		CONNECTION "db stuff"
    		DATA "geomlatlon from transporte.pg_trechos"
    		STATUS default
    
    		METADATA
    			"wms_title" "pg_trechos"
    		END
    
    		CLASS
    			NAME "Trechos"
    			OUTLINECOLOR 46 33 255
    			COLOR 226 225 232
    		END
    	END
    
    END