diff --git a/src/com/android/browser/AddBookmarkPage.java b/src/com/android/browser/AddBookmarkPage.java
index e52d3f0..13c3d16 100644
--- a/src/com/android/browser/AddBookmarkPage.java
+++ b/src/com/android/browser/AddBookmarkPage.java
@@ -1056,6 +1056,9 @@
             if (urlUnmodified) {
                 thumbnail = (Bitmap) mMap.getParcelable(
                         BrowserContract.Bookmarks.THUMBNAIL);
+                if (thumbnail == null) {
+                    thumbnail = Controller.getAndReleaseLastBookmarkBitmapFromIntent();
+                }
                 favicon = (Bitmap) mMap.getParcelable(
                         BrowserContract.Bookmarks.FAVICON);
             } else {
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 747b779..80a5a42 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -254,6 +254,7 @@
     private String mUpdateMyNavThumbnailUrl;
     private float mLevel = 0.0f;
     private WebView.HitTestResult mResult;
+    private static Bitmap mBookmarkBitmap;
 
     public Controller(Activity browser) {
         mActivity = browser;
@@ -2309,6 +2310,16 @@
         BrowserPreferencesPage.startPreferencesForResult(mActivity, getCurrentTopWebView().getUrl(), PREFERENCES_PAGE);
     }
 
+    // This function is specifically used from AddBookmark Activity.
+    // The bookmark activity clears the bitmap after retrieving it.
+    // The function usage elsewhere will result in breaking bookmark
+    // functionality.
+    public static Bitmap getAndReleaseLastBookmarkBitmapFromIntent() {
+        Bitmap bitmap = mBookmarkBitmap;
+        mBookmarkBitmap = null;
+        return bitmap;
+    }
+
     @Override
     public void bookmarkCurrentPage() {
         WebView w = getCurrentTopWebView();
@@ -2321,7 +2332,7 @@
             new ValueCallback<Bitmap>() {
                 @Override
                     public void onReceiveValue(Bitmap bitmap) {
-                    i.putExtra(BrowserContract.Bookmarks.THUMBNAIL, bitmap);
+                    mBookmarkBitmap = bitmap;
                     mActivity.startActivity(i);
                 }
             });
@@ -2620,7 +2631,6 @@
         if (view == null || width == 0 || height == 0) {
             return;
         }
-
         view.getContentBitmapAsync(
             (float) width / view.getWidth(),
             new Rect(),
