diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp
index 49f0eef8..53f94efb 100644
--- a/src/board/UBBoardController.cpp
+++ b/src/board/UBBoardController.cpp
@@ -503,6 +503,7 @@ void UBBoardController::stylusToolDoubleClicked(int tool)
     else if (tool == UBStylusTool::Hand)
     {
         centerRestore();
+        mActiveScene->setLastCenter(QPointF(0,0));
     }
 }
 
@@ -511,6 +512,7 @@ void UBBoardController::stylusToolDoubleClicked(int tool)
 void UBBoardController::addScene()
 {
     QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+    persistViewPositionOnCurrentScene();
     persistCurrentScene(false,true);
 
     UBDocumentContainer::addPage(mActiveSceneIndex + 1);
@@ -790,6 +792,8 @@ void UBBoardController::clearScene()
     {
         freezeW3CWidgets(true);
         mActiveScene->clearContent(UBGraphicsScene::clearItemsAndAnnotations);
+        mActiveScene->setLastCenter(QPointF(0,0));
+        mControlView->centerOn(mActiveScene->lastCenter());
         updateActionStates();
     }
 }
@@ -959,14 +963,23 @@ void UBBoardController::handScroll(qreal dx, qreal dy)
     emit controlViewportChanged();
 }
 
+void UBBoardController::persistViewPositionOnCurrentScene()
+{
+    QRect rect = mControlView->rect();
+    QPoint center(rect.x() + rect.width() / 2, rect.y() + rect.height() / 2);
+    QPointF viewRelativeCenter = mControlView->mapToScene(center);
+    mActiveScene->setLastCenter(viewRelativeCenter);
+}
 
 void UBBoardController::previousScene()
 {
     if (mActiveSceneIndex > 0)
     {
         QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        persistViewPositionOnCurrentScene();
         persistCurrentScene();
         setActiveDocumentScene(mActiveSceneIndex - 1);
+        mControlView->centerOn(mActiveScene->lastCenter());
         QApplication::restoreOverrideCursor();
     }
 
@@ -979,8 +992,10 @@ void UBBoardController::nextScene()
     if (mActiveSceneIndex < selectedDocument()->pageCount() - 1)
     {
         QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        persistViewPositionOnCurrentScene();
         persistCurrentScene();
         setActiveDocumentScene(mActiveSceneIndex + 1);
+        mControlView->centerOn(mActiveScene->lastCenter());
         QApplication::restoreOverrideCursor();
     }
 
@@ -993,8 +1008,10 @@ void UBBoardController::firstScene()
     if (mActiveSceneIndex > 0)
     {
         QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        persistViewPositionOnCurrentScene();
         persistCurrentScene();
         setActiveDocumentScene(0);
+        mControlView->centerOn(mActiveScene->lastCenter());
         QApplication::restoreOverrideCursor();
     }
 
@@ -1007,8 +1024,10 @@ void UBBoardController::lastScene()
     if (mActiveSceneIndex < selectedDocument()->pageCount() - 1)
     {
         QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+        persistViewPositionOnCurrentScene();
         persistCurrentScene();
         setActiveDocumentScene(selectedDocument()->pageCount() - 1);
+        mControlView->centerOn(mActiveScene->lastCenter());
         QApplication::restoreOverrideCursor();
     }
 
@@ -2093,7 +2112,8 @@ void UBBoardController::saveViewState()
     {
         mActiveScene->setViewState(UBGraphicsScene::SceneViewState(currentZoom(),
                                                                    mControlView->horizontalScrollBar()->value(),
-                                                                   mControlView->verticalScrollBar()->value()));
+                                                                   mControlView->verticalScrollBar()->value(),
+                                                                   mActiveScene->lastCenter()));
     }
 }
 
diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h
index 1b66c1e8..da3ee403 100644
--- a/src/board/UBBoardController.h
+++ b/src/board/UBBoardController.h
@@ -159,6 +159,7 @@ class UBBoardController : public UBDocumentContainer
             return mSystemScaleFactor;
         }
         qreal currentZoom();
+        void persistViewPositionOnCurrentScene();
         void persistCurrentScene(bool isAnAutomaticBackup = false, bool forceImmediateSave = false);
         void showNewVersionAvailable(bool automatic, const UBVersion &installedVersion, const UBSoftwareUpdate &softwareUpdate);
         void setBoxing(QRect displayRect);
diff --git a/src/core/UBApplicationController.cpp b/src/core/UBApplicationController.cpp
index d8bdc89f..030a0da0 100644
--- a/src/core/UBApplicationController.cpp
+++ b/src/core/UBApplicationController.cpp
@@ -233,15 +233,12 @@ void UBApplicationController::adjustDisplayView()
 
         tr.scale(scaleFactor, scaleFactor);
 
-        QRect rect = mControlView->rect();
-        QPoint center(rect.x() + rect.width() / 2, rect.y() + rect.height() / 2);
-
         QTransform recentTransform = mDisplayView->transform();
 
         if (recentTransform != tr)
             mDisplayView->setTransform(tr);
 
-        mDisplayView->centerOn(mControlView->mapToScene(center));
+        mDisplayView->centerOn(UBApplication::boardController->activeScene()->lastCenter());
     }
 }
 
diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp
index 43d35cda..f120ff3a 100644
--- a/src/domain/UBGraphicsScene.cpp
+++ b/src/domain/UBGraphicsScene.cpp
@@ -385,6 +385,16 @@ void UBGraphicsScene::selectionChangedProcessing()
     }
 }
 
+void UBGraphicsScene::setLastCenter(QPointF center)
+{
+    mViewState.setLastSceneCenter(center);
+}
+
+QPointF UBGraphicsScene::lastCenter()
+{
+    return mViewState.lastSceneCenter();
+}
+
 bool UBGraphicsScene::inputDevicePress(const QPointF& scenePos, const qreal& pressure)
 {
     bool accepted = false;
diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h
index 1f1b2a1e..91625103 100644
--- a/src/domain/UBGraphicsScene.h
+++ b/src/domain/UBGraphicsScene.h
@@ -156,7 +156,8 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem
         UBGraphicsW3CWidgetItem* addW3CWidget(const QUrl& pWidgetUrl, const QPointF& pPos = QPointF(0, 0));
         void addGraphicsWidget(UBGraphicsWidgetItem* graphicsWidget, const QPointF& pPos = QPointF(0, 0));
 
-
+        QPointF lastCenter();
+        void setLastCenter(QPointF center);
 
         UBGraphicsMediaItem* addMedia(const QUrl& pMediaFileUrl, bool shouldPlayAsap, const QPointF& pPos = QPointF(0, 0));
         UBGraphicsMediaItem* addVideo(const QUrl& pVideoFileUrl, bool shouldPlayAsap, const QPointF& pPos = QPointF(0, 0));
@@ -256,15 +257,29 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem
                     zoomFactor = 1;
                     horizontalPosition = 0;
                     verticalPostition = 0;
+                    mLastSceneCenter = QPointF();
                 }
 
-                SceneViewState(qreal pZoomFactor, int pHorizontalPosition, int pVerticalPostition)
+                SceneViewState(qreal pZoomFactor, int pHorizontalPosition, int pVerticalPostition, QPointF sceneCenter = QPointF())// 1595/1605
                 {
                     zoomFactor = pZoomFactor;
                     horizontalPosition = pHorizontalPosition;
                     verticalPostition = pVerticalPostition;
+                    mLastSceneCenter = sceneCenter;
+                }
+
+                QPointF lastSceneCenter() // Save Scene Center to replace the view when the scene becomes active
+                {
+                    return mLastSceneCenter;
                 }
 
+                void setLastSceneCenter(QPointF center)
+                {
+                    mLastSceneCenter = center;
+                }
+
+                QPointF mLastSceneCenter;
+
                 qreal zoomFactor;
                 int horizontalPosition;
                 int verticalPostition;
diff --git a/src/gui/UBBoardThumbnailsView.cpp b/src/gui/UBBoardThumbnailsView.cpp
index 74a314c6..ee90f077 100644
--- a/src/gui/UBBoardThumbnailsView.cpp
+++ b/src/gui/UBBoardThumbnailsView.cpp
@@ -197,8 +197,10 @@ void UBBoardThumbnailsView::mousePressEvent(QMouseEvent *event)
 
     if (item)
     {
+        UBApplication::boardController->persistViewPositionOnCurrentScene();
         UBApplication::boardController->persistCurrentScene();
         UBApplication::boardController->setActiveDocumentScene(item->sceneIndex());
+        UBApplication::boardController->centerOn(UBApplication::boardController->activeScene()->lastCenter());
     }
 
     QGraphicsView::mousePressEvent(event);