diff --git a/src/location/declarativemaps/qdeclarativegeomap.cpp b/src/location/declarativemaps/qdeclarativegeomap.cpp
index bd9c9cf23af9b4b3b807c91f1b5c96ca7c8ddd28..90ae2b34ff5ea25099fc9b36d847719879f10217 100644
--- a/src/location/declarativemaps/qdeclarativegeomap.cpp
+++ b/src/location/declarativemaps/qdeclarativegeomap.cpp
@@ -1423,7 +1423,7 @@ void QDeclarativeGeoMap::fitViewportToGeoShape()
     QGeoCoordinate centerCoordinate = m_map->geoProjection().mapProjectionToGeo(center);
 
     // position camera to the center of bounding box
-    setCenter(centerCoordinate);
+    setProperty("center", QVariant::fromValue(centerCoordinate)); // not using setCenter(centerCoordinate) to honor a possible animation set on the center property
 
     // if the shape is empty we just change center position, not zoom
     double bboxWidth  = (bottomRightPoint.x() - topLeftPoint.x()) * m_map->mapWidth();
@@ -1436,7 +1436,7 @@ void QDeclarativeGeoMap::fitViewportToGeoShape()
                             bboxHeight / (height() - margins));
     zoomRatio = std::log(zoomRatio) / std::log(2.0);
     double newZoom = qMax<double>(minimumZoomLevel(), zoomLevel() - zoomRatio);
-    setZoomLevel(newZoom);
+    setProperty("zoomLevel", QVariant::fromValue(newZoom)); // not using setZoomLevel(newZoom)  to honor a possible animation set on the zoomLevel property
 }