diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index ba74e56..2fb465c 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -847,6 +847,7 @@
 
     @Override
     public void onPageFinished(Tab tab) {
+        mCrashRecoveryHandler.backupState();
         mUi.onTabDataChanged(tab);
         // pause the WebView timer and release the wake lock if it is finished
         // while BrowserActivity is in pause state.
@@ -864,7 +865,6 @@
 
     @Override
     public void onProgressChanged(Tab tab) {
-        mCrashRecoveryHandler.backupState();
         int newProgress = tab.getLoadProgress();
 
         if (newProgress == 100) {
@@ -885,8 +885,9 @@
                 // Only update the bookmark screenshot if the user did not
                 // cancel the load early and there is not already
                 // a pending update for the tab.
-                if (tab.inForeground() && !didUserStopLoading()
-                        || !tab.inForeground()) {
+                if (tab.shouldUpdateThumbnail() &&
+                        (tab.inForeground() && !didUserStopLoading()
+                        || !tab.inForeground())) {
                     if (!mHandler.hasMessages(UPDATE_BOOKMARK_THUMBNAIL, tab)) {
                         mHandler.sendMessageDelayed(mHandler.obtainMessage(
                                 UPDATE_BOOKMARK_THUMBNAIL, 0, 0, tab),
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 712e30a..28734bd 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -185,6 +185,7 @@
     private int mCaptureHeight;
     private Bitmap mCapture;
     private Handler mHandler;
+    private boolean mUpdateThumbnail;
 
     /**
      * See {@link #clearBackStackWhenItemAdded(String)}.
@@ -334,6 +335,7 @@
         @Override
         public void onPageStarted(WebView view, String url, Bitmap favicon) {
             mInPageLoad = true;
+            mUpdateThumbnail = true;
             mPageLoadProgress = INITIAL_PROGRESS;
             mCurrentState = new PageState(mContext,
                     view.isPrivateBrowsingEnabled(), url, favicon);
@@ -792,6 +794,9 @@
                 mInPageLoad = false;
             }
             mWebViewController.onProgressChanged(Tab.this);
+            if (mUpdateThumbnail && newProgress == 100) {
+                mUpdateThumbnail = false;
+            }
         }
 
         @Override
@@ -1203,6 +1208,10 @@
         };
     }
 
+    public boolean shouldUpdateThumbnail() {
+        return mUpdateThumbnail;
+    }
+
     /**
      * This is used to get a new ID when the tab has been preloaded, before it is displayed and
      * added to TabControl. Preloaded tabs can be created before restoreInstanceState, leading
@@ -1925,7 +1934,6 @@
 
     @Override
     public void onNewPicture(WebView view, Picture picture) {
-        //update screenshot
         postCapture();
     }
 
