diff --git a/src/core/qgsmaprenderer.cpp b/src/core/qgsmaprenderer.cpp
index e682b89..b708798 100644
--- a/src/core/qgsmaprenderer.cpp
+++ b/src/core/qgsmaprenderer.cpp
@@ -275,6 +275,10 @@ void QgsMapRenderer::render( QPainter* painter )
   //so must be false at every new render operation
   mRenderContext.setRenderingStopped( false );
 
+  QSettings mySettings; // used in a few places
+  // this is used several times
+  bool isRenderCachingEnabled = mySettings.value( "/qgis/enable_render_caching", false ).toBool();
+
   //calculate scale factor
   //use the specified dpi and not those from the paint device
   //because sometimes QPainter units are in a local coord sys (e.g. in case of QGraphicsScene)
@@ -303,7 +307,10 @@ void QgsMapRenderer::render( QPainter* painter )
   }
   if ( mLastExtent != mExtent )
   {
-    mLastExtent = mExtent;
+    if ( isRenderCachingEnabled )
+    {
+      mLastExtent = mExtent;  // only if caching is enabled to prevent using some previously cached image at a different extent
+    }
     mySameAsLastFlag = false;
   }
 
@@ -316,8 +323,7 @@ void QgsMapRenderer::render( QPainter* painter )
   if ( !mySameAsLastFlag )
   {
     //clear the cache pixmap if we changed resolution / extent
-    QSettings mySettings;
-    if ( mySettings.value( "/qgis/enable_render_caching", false ).toBool() )
+    if ( isRenderCachingEnabled )
     {
       QgsMapLayerRegistry::instance()->clearAllLayerCaches();
     }
@@ -448,10 +454,10 @@ void QgsMapRenderer::render( QPainter* painter )
         }
       }
 
-      QSettings mySettings;
-      if ( ! split )//render caching does not yet cater for split extents
+      // don't use cache for overview
+      if ( ! split && ! mOverview )//render caching does not yet cater for split extents
       {
-        if ( mySettings.value( "/qgis/enable_render_caching", false ).toBool() )
+        if ( isRenderCachingEnabled )
         {
           if ( !mySameAsLastFlag || ml->cacheImage() == 0 )
           {
@@ -516,9 +522,9 @@ void QgsMapRenderer::render( QPainter* painter )
         mRenderContext.painter()->restore();
       }
 
-      if ( mySettings.value( "/qgis/enable_render_caching", false ).toBool() )
+      if ( isRenderCachingEnabled )
       {
-        if ( !split )
+        if ( !split && ! mOverview )  // don't use cache for overview
         {
           // composite the cached image into our view and then clean up from caching
           // by reinstating the painter as it was swapped out for caching renders
diff --git a/src/core/qgsvectorlayer.cpp b/src/core/qgsvectorlayer.cpp
index 730b348..4ed826a 100644
--- a/src/core/qgsvectorlayer.cpp
+++ b/src/core/qgsvectorlayer.cpp
@@ -948,6 +948,8 @@ bool QgsVectorLayer::draw( QgsRenderContext& rendererContext )
   //set update threshold before each draw to make sure the current setting is picked up
   QSettings settings;
   mUpdateThreshold = settings.value( "Map/updateThreshold", 0 ).toInt();
+  // if render caching is enabled, don't draw incrementally
+  mUpdateThreshold = settings.value( "/qgis/enable_render_caching", false ).toBool() ? 0 : mUpdateThreshold;
 
   if ( mUsingRendererV2 )
   {
diff --git a/src/gui/qgsmapoverviewcanvas.cpp b/src/gui/qgsmapoverviewcanvas.cpp
index 338b270..7140691 100644
--- a/src/gui/qgsmapoverviewcanvas.cpp
+++ b/src/gui/qgsmapoverviewcanvas.cpp
@@ -93,9 +93,25 @@ void QgsMapOverviewCanvas::paintEvent( QPaintEvent* pe )
 {
   if ( mNewSize.isValid() )
   {
+    if ( mPixmap.paintingActive() )
+    {
+      // cancel current render progress
+      if ( mMapRenderer )
+      {
+        QgsRenderContext* theRenderContext = mMapRenderer->rendererContext();
+        if ( theRenderContext )
+        {
+          theRenderContext->setRenderingStopped( true );
+        }
+      }
+      return;
+    }
+
     mPixmap = QPixmap( mNewSize );
     mMapRenderer->setOutputSize( mNewSize, mPixmap.logicalDpiX() );
     mNewSize = QSize();
+    // on resize, show full extent of overview, rather than keeping the current overview extent (the map scale decreases as window is made smaller)
+    updateFullExtent( mMapCanvas->fullExtent() );
     refresh();
   }
 
@@ -190,19 +206,22 @@ void QgsMapOverviewCanvas::mousePressEvent( QMouseEvent * e )
 //  if (mPanningWidget->isHidden())
 //    return;
 
-  // set offset in panning widget if inside it
-  // for better experience with panning :)
-  if ( mPanningWidget->geometry().contains( e->pos() ) )
-  {
-    mPanningCursorOffset = e->pos() - mPanningWidget->pos();
-  }
-  else
+  if ( e->button() == Qt::LeftButton )  // handle only left button
   {
-    // use center of the panning widget if outside
-    QSize s = mPanningWidget->size();
-    mPanningCursorOffset = QPoint( s.width() / 2, s.height() / 2 );
+    // set offset in panning widget if inside it
+    // for better experience with panning :)
+    if ( mPanningWidget->geometry().contains( e->pos() ) )
+    {
+      mPanningCursorOffset = e->pos() - mPanningWidget->pos();
+    }
+    else
+    {
+      // use center of the panning widget if outside
+      QSize s = mPanningWidget->size();
+      mPanningCursorOffset = QPoint( s.width() / 2, s.height() / 2 );
+    }
+    updatePanningWidget( e->pos() );
   }
-  updatePanningWidget( e->pos() );
 }
 
 
diff --git a/src/ui/qgsoptionsbase.ui b/src/ui/qgsoptionsbase.ui
index 41b7865..5a52a0e 100644
--- a/src/ui/qgsoptionsbase.ui
+++ b/src/ui/qgsoptionsbase.ui
@@ -60,8 +60,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>780</width>
-            <height>755</height>
+            <width>764</width>
+            <height>747</height>
            </rect>
           </property>
           <layout class="QGridLayout" name="gridLayout_12">
@@ -499,8 +499,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>780</width>
-            <height>433</height>
+            <width>764</width>
+            <height>416</height>
            </rect>
           </property>
           <layout class="QGridLayout" name="gridLayout_8">
@@ -667,8 +667,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>780</width>
-            <height>456</height>
+            <width>764</width>
+            <height>410</height>
            </rect>
           </property>
           <layout class="QGridLayout" name="gridLayout_4">
@@ -947,8 +947,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>795</width>
-            <height>415</height>
+            <width>781</width>
+            <height>401</height>
            </rect>
           </property>
           <layout class="QGridLayout" name="gridLayout_10">
@@ -1022,8 +1022,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>795</width>
-            <height>415</height>
+            <width>781</width>
+            <height>401</height>
            </rect>
           </property>
           <layout class="QGridLayout" name="gridLayout_13">
@@ -1352,8 +1352,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>795</width>
-            <height>415</height>
+            <width>781</width>
+            <height>401</height>
            </rect>
           </property>
           <layout class="QGridLayout" name="gridLayout_15">
@@ -1520,7 +1520,7 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>780</width>
+            <width>764</width>
             <height>527</height>
            </rect>
           </property>
@@ -1611,8 +1611,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>780</width>
-            <height>461</height>
+            <width>764</width>
+            <height>463</height>
            </rect>
           </property>
           <layout class="QGridLayout" name="gridLayout_20">
@@ -1971,5 +1971,21 @@
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>chkUseRenderCaching</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>spinBoxUpdateThreshold</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>402</x>
+     <y>158</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>585</x>
+     <y>114</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
 </ui>
