diff --git a/src/com/android/browser/preferences/LegalPreviewActivity.java b/src/com/android/browser/preferences/LegalPreviewActivity.java
index eeaf558..4ca9d63 100644
--- a/src/com/android/browser/preferences/LegalPreviewActivity.java
+++ b/src/com/android/browser/preferences/LegalPreviewActivity.java
@@ -53,16 +53,22 @@
             bar.setTitle(R.string.swe_open_source_licenses);
             bar.setDisplayHomeAsUpEnabled(true);
         }
-        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
-        mLegalPreviewFragment = new LegalPreviewFragment();
-        Bundle args = new Bundle();
-        args.putString(URL_INTENT_EXTRA, getIntent().getExtras()
+        if (savedInstanceState == null) {
+            FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
+            mLegalPreviewFragment = new LegalPreviewFragment();
+            Bundle args = new Bundle();
+            args.putString(URL_INTENT_EXTRA, getIntent().getExtras()
                             .getString(URL_INTENT_EXTRA));
-        mLegalPreviewFragment.setArguments(args);
-        fragmentTransaction.add(R.id.license_layout, mLegalPreviewFragment,
+            mLegalPreviewFragment.setArguments(args);
+            fragmentTransaction.add(R.id.license_layout, mLegalPreviewFragment,
                 "LegalPreviewFragmentTag");
-        fragmentTransaction.addToBackStack(null);
-        fragmentTransaction.commit();
+            fragmentTransaction.addToBackStack(null);
+            fragmentTransaction.commit();
+        } else  {
+            mLegalPreviewFragment =
+                (LegalPreviewFragment) getFragmentManager().findFragmentByTag(
+                    "LegalPreviewFragmentTag");
+        }
     }
 
     private boolean back() {
diff --git a/src/com/android/browser/preferences/LegalPreviewFragment.java b/src/com/android/browser/preferences/LegalPreviewFragment.java
index ec60e10..515236b 100644
--- a/src/com/android/browser/preferences/LegalPreviewFragment.java
+++ b/src/com/android/browser/preferences/LegalPreviewFragment.java
@@ -51,6 +51,7 @@
         super.onCreate(savedInstanceState);
         Bundle args = getArguments();
         mUrl = args.getString(LegalPreviewActivity.URL_INTENT_EXTRA);
+        mWebView = new WebView(getActivity());
     }
 
     @Override
@@ -61,16 +62,22 @@
         FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                 FrameLayout.LayoutParams.MATCH_PARENT,
                 FrameLayout.LayoutParams.MATCH_PARENT);
-        mWebView = new WebView(getActivity());
         contentContainer.addView(mWebView.getView(), params);
         return contentContainer;
     }
 
     @Override
+    public void onDestroy() {
+        super.onDestroy();
+        mWebView.destroy();
+        mWebView = null;
+    }
+
+    @Override
     public void onActivityCreated(Bundle b) {
         super.onActivityCreated(b);
         if (mWebView == null) return;
-            mWebView.loadUrl(mUrl);
+        mWebView.loadUrl(mUrl);
     }
 
     public boolean onBackPressed() {
