diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index 5ee9477..6919300 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -192,6 +192,9 @@
     // determine if webview is destroyed to MemoryMonitor
     private boolean mWebViewDestroyedByMemoryMonitor;
 
+    // Tab started initally in background
+    private boolean mBackgroundTab;
+
     private String mTouchIconUrl;
 
     private Observable mFirstPixelObservable;
@@ -328,6 +331,7 @@
         @Override
         public void onPageStarted(WebView view, String url, Bitmap favicon) {
             setIsDistillable(false);
+            mBackgroundTab = false;
             mInPageLoad = true;
             mPageFinished = false;
             mFirstVisualPixelPainted = false;
@@ -1175,6 +1179,10 @@
     }
 
     Tab(WebViewController wvcontroller, WebView w, Bundle state) {
+        this(wvcontroller, null, state, false);
+    }
+
+    Tab(WebViewController wvcontroller, WebView w, Bundle state, boolean backgroundTab) {
         mWebViewController = wvcontroller;
         mContext = mWebViewController.getContext();
         mSettings = BrowserSettings.getInstance();
@@ -1185,6 +1193,7 @@
         mInPageLoad = false;
         mInForeground = false;
         mWebViewDestroyedByMemoryMonitor = false;
+        mBackgroundTab = backgroundTab;
 
         mDownloadListener = new BrowserDownloadListener() {
             public void onDownloadStart(String url, String userAgent,
@@ -1302,18 +1311,9 @@
             mMainView.setPictureListener(null);
             if (w != null) {
                 syncCurrentState(w, null);
-            } else {
-                mCurrentState = new PageState(mContext, mMainView.isPrivateBrowsingEnabled());
-
-                if (mWebViewDestroyedByMemoryMonitor) {
-                    /*
-                    * If tab was destroyed as a result of the MemoryMonitor
-                    * then we need to restore the state properties
-                    * from the old WebView (mMainView)
-                    */
-                    syncCurrentState(mMainView, null);
-                    mWebViewDestroyedByMemoryMonitor = false;
-                }
+            } else if(!mWebViewDestroyedByMemoryMonitor) {
+                mCurrentState = new PageState(mContext,
+                    mMainView.isPrivateBrowsingEnabled());
             }
         }
         // set the new one
@@ -1340,7 +1340,11 @@
                     Log.w(LOGTAG, "Failed to restore WebView state!");
                     loadUrl(mCurrentState.mOriginalUrl, null);
                 }
+                mWebViewDestroyedByMemoryMonitor = false;
                 mSavedState = null;
+            } else if(restore && mBackgroundTab && mWebViewDestroyedByMemoryMonitor) {
+                loadUrl(mCurrentState.mOriginalUrl, null);
+                mWebViewDestroyedByMemoryMonitor = false;
             }
         }
     }
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 81da696..91d2bca 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -249,7 +249,7 @@
         final WebView w = createNewWebView(privateBrowsing, backgroundTab);
 
         // Create a new tab and add it to the tab list
-        Tab t = new Tab(mController, w, state);
+        Tab t = new Tab(mController, w, state, backgroundTab);
         mTabs.add(t);
         mTabCountObservable.set(mTabs.size());
         if (privateBrowsing) {
