diff --git a/src/location/declarativemaps/qdeclarativegeomap.cpp b/src/location/declarativemaps/qdeclarativegeomap.cpp
index f5d2bdb5c3388bb9e8fc975c2da8120a91a01de9..bd9c9cf23af9b4b3b807c91f1b5c96ca7c8ddd28 100644
--- a/src/location/declarativemaps/qdeclarativegeomap.cpp
+++ b/src/location/declarativemaps/qdeclarativegeomap.cpp
@@ -241,6 +241,8 @@ QDeclarativeGeoMap::~QDeclarativeGeoMap()
 
     delete m_copyrights.data();
     m_copyrights.clear();
+
+    delete m_map;
 }
 
 /*!
@@ -279,17 +281,17 @@ void QDeclarativeGeoMap::onMapChildrenChanged()
 
             copyrights = m_copyrights.data();
 
-            connect(m_map.data(), SIGNAL(copyrightsChanged(QImage)),
+            connect(m_map, SIGNAL(copyrightsChanged(QImage)),
                     copyrights, SLOT(copyrightsChanged(QImage)));
-            connect(m_map.data(), SIGNAL(copyrightsChanged(QImage)),
+            connect(m_map, SIGNAL(copyrightsChanged(QImage)),
                     this,  SIGNAL(copyrightsChanged(QImage)));
 
-            connect(m_map.data(), SIGNAL(copyrightsChanged(QString)),
+            connect(m_map, SIGNAL(copyrightsChanged(QString)),
                     copyrights, SLOT(copyrightsChanged(QString)));
-            connect(m_map.data(), SIGNAL(copyrightsChanged(QString)),
+            connect(m_map, SIGNAL(copyrightsChanged(QString)),
                     this,  SIGNAL(copyrightsChanged(QString)));
 
-            connect(m_map.data(), SIGNAL(copyrightsStyleSheetChanged(QString)),
+            connect(m_map, SIGNAL(copyrightsStyleSheetChanged(QString)),
                     copyrights, SLOT(onCopyrightsStyleSheetChanged(QString)));
 
             connect(copyrights, SIGNAL(linkActivated(QString)),
@@ -725,7 +727,7 @@ void QDeclarativeGeoMap::onCameraCapabilitiesChanged(const QGeoCameraCapabilitie
 */
 void QDeclarativeGeoMap::mappingManagerInitialized()
 {
-    m_map = QPointer<QGeoMap>(m_mappingManager->createMap(this));
+    m_map = m_mappingManager->createMap(this);
 
     if (!m_map)
         return;
@@ -765,11 +767,11 @@ void QDeclarativeGeoMap::mappingManagerInitialized()
     QImage copyrightImage;
     if (!m_initialized && width() > 0 && height() > 0) {
         QMetaObject::Connection copyrightStringCatcherConnection =
-                connect(m_map.data(),
+                connect(m_map,
                         QOverload<const QString &>::of(&QGeoMap::copyrightsChanged),
                         [&copyrightString](const QString &copy){ copyrightString = copy; });
         QMetaObject::Connection copyrightImageCatcherConnection =
-                connect(m_map.data(),
+                connect(m_map,
                         QOverload<const QImage &>::of(&QGeoMap::copyrightsChanged),
                         [&copyrightImage](const QImage &copy){ copyrightImage = copy; });
         m_map->setViewportSize(QSize(width(), height()));
@@ -781,28 +783,28 @@ void QDeclarativeGeoMap::mappingManagerInitialized()
     m_copyrights = new QDeclarativeGeoMapCopyrightNotice(this);
     m_copyrights->onCopyrightsStyleSheetChanged(m_map->copyrightsStyleSheet());
 
-    connect(m_map.data(), SIGNAL(copyrightsChanged(QImage)),
+    connect(m_map, SIGNAL(copyrightsChanged(QImage)),
             m_copyrights.data(), SLOT(copyrightsChanged(QImage)));
-    connect(m_map.data(), SIGNAL(copyrightsChanged(QImage)),
+    connect(m_map, SIGNAL(copyrightsChanged(QImage)),
             this,  SIGNAL(copyrightsChanged(QImage)));
 
-    connect(m_map.data(), SIGNAL(copyrightsChanged(QString)),
+    connect(m_map, SIGNAL(copyrightsChanged(QString)),
             m_copyrights.data(), SLOT(copyrightsChanged(QString)));
-    connect(m_map.data(), SIGNAL(copyrightsChanged(QString)),
+    connect(m_map, SIGNAL(copyrightsChanged(QString)),
             this,  SIGNAL(copyrightsChanged(QString)));
 
     if (!copyrightString.isEmpty())
-        emit m_map.data()->copyrightsChanged(copyrightString);
+        emit m_map->copyrightsChanged(copyrightString);
     else if (!copyrightImage.isNull())
-        emit m_map.data()->copyrightsChanged(copyrightImage);
+        emit m_map->copyrightsChanged(copyrightImage);
 
-    connect(m_map.data(), SIGNAL(copyrightsStyleSheetChanged(QString)),
+    connect(m_map, SIGNAL(copyrightsStyleSheetChanged(QString)),
             m_copyrights.data(), SLOT(onCopyrightsStyleSheetChanged(QString)));
 
     connect(m_copyrights.data(), SIGNAL(linkActivated(QString)),
             this, SIGNAL(copyrightLinkActivated(QString)));
-    connect(m_map.data(), &QGeoMap::sgNodeChanged, this, &QQuickItem::update);
-    connect(m_map.data(), &QGeoMap::cameraCapabilitiesChanged, this, &QDeclarativeGeoMap::onCameraCapabilitiesChanged);
+    connect(m_map, &QGeoMap::sgNodeChanged, this, &QQuickItem::update);
+    connect(m_map, &QGeoMap::cameraCapabilitiesChanged, this, &QDeclarativeGeoMap::onCameraCapabilitiesChanged);
 
     // set visibility of copyright notice
     m_copyrights->setCopyrightsVisible(m_copyrightsVisible);
diff --git a/src/location/declarativemaps/qdeclarativegeomap_p.h b/src/location/declarativemaps/qdeclarativegeomap_p.h
index f07a2e7f3cfbd2b2d8610dd12709a7c815caff86..e8ff326519d1ef8fe9266d6b7c7e37c72269679b 100644
--- a/src/location/declarativemaps/qdeclarativegeomap_p.h
+++ b/src/location/declarativemaps/qdeclarativegeomap_p.h
@@ -252,7 +252,7 @@ private:
     QList<QDeclarativeGeoMapType *> m_supportedMapTypes;
     QList<QDeclarativeGeoMapItemView *> m_mapViews;
     QQuickGeoMapGestureArea *m_gestureArea;
-    QPointer<QGeoMap> m_map;
+    QGeoMap* m_map = nullptr;
     QPointer<QDeclarativeGeoMapCopyrightNotice> m_copyrights;
     QList<QPointer<QDeclarativeGeoMapItemBase> > m_mapItems;
     QList<QPointer<QDeclarativeGeoMapItemGroup> > m_mapItemGroups;
diff --git a/src/location/declarativemaps/qquickgeomapgesturearea.cpp b/src/location/declarativemaps/qquickgeomapgesturearea.cpp
index a40afd6827d7a2870f443bbb4c2a0695cf090069..33a984d6fd4b413c4398d144196ff1e839cf2bc0 100644
--- a/src/location/declarativemaps/qquickgeomapgesturearea.cpp
+++ b/src/location/declarativemaps/qquickgeomapgesturearea.cpp
@@ -508,7 +508,7 @@ QQuickGeoMapGestureArea::QQuickGeoMapGestureArea(QDeclarativeGeoMap *map)
 /*!
     \internal
 */
-void QQuickGeoMapGestureArea::setMap(QPointer<QGeoMap> map)
+void QQuickGeoMapGestureArea::setMap(QGeoMap *map)
 {
     if (m_map || !map)
         return;
diff --git a/src/location/declarativemaps/qquickgeomapgesturearea_p.h b/src/location/declarativemaps/qquickgeomapgesturearea_p.h
index 5daa39cf230fece8016b8a7f9980732e0455e898..0bc774d338bc784a6aa0f2e5aa9dd80f47a317b2 100644
--- a/src/location/declarativemaps/qquickgeomapgesturearea_p.h
+++ b/src/location/declarativemaps/qquickgeomapgesturearea_p.h
@@ -178,7 +178,7 @@ public:
     void setMaximumZoomLevel(qreal max);
     qreal maximumZoomLevel() const;
 
-    void setMap(QPointer<QGeoMap> map);
+    void setMap(QGeoMap* map);
 
     bool preventStealing() const;
     void setPreventStealing(bool prevent);
@@ -267,7 +267,7 @@ private:
     void updateFlickParameters(const QPointF &pos);
 
 private:
-    QPointer<QGeoMap> m_map;
+    QGeoMap* m_map;
     QDeclarativeGeoMap *m_declarativeMap;
     bool m_enabled;
 
diff --git a/src/location/maps/qgeomappingmanager.cpp b/src/location/maps/qgeomappingmanager.cpp
index cf040bebe605f714b0d475916a00915ea3662527..d73050f7deb4c1d405d956919d5cc4fa558456eb 100644
--- a/src/location/maps/qgeomappingmanager.cpp
+++ b/src/location/maps/qgeomappingmanager.cpp
@@ -133,10 +133,8 @@ int QGeoMappingManager::managerVersion() const
 */
 QGeoMap *QGeoMappingManager::createMap(QObject *parent)
 {
-    QGeoMap * map = d_ptr->engine->createMap();
-    if (map)
-        connect(parent, &QObject::destroyed,map, &QGeoMap::deleteLater);
-    return map;
+    Q_UNUSED(parent)
+    return d_ptr->engine->createMap();
 }
 
 QList<QGeoMapType> QGeoMappingManager::supportedMapTypes() const