diff --git a/res/values/strings.xml b/res/values/strings.xml
index 49d939c..39aa0cc 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -466,7 +466,7 @@
     <!-- The title of the activity to see battery info. -->
     <string name="battery_info_label">Battery info</string>
     <!-- The title of the activity to adjust display settings -->
-    <string name="display_label">Display</string>
+    <string name="display_label">Screen</string>
     <!-- The title of the activity to see phone info -->
     <string name="phone_info_label" product="tablet">Tablet info</string>
     <!-- The title of the activity to see phone info -->
@@ -1405,7 +1405,7 @@
 
     <!-- Display settings -->
     <!-- Sound & display settings screen, section header for settings related to display -->
-    <string name="display_settings">Display settings</string>
+    <string name="display_settings">Screen settings</string>
     <!-- Sound & display settings screen, animations check box label -->
     <string name="animations_title">Animation</string>
     <!-- Sound & display settings screen, animations option summary text when check box is selected -->
@@ -2601,7 +2601,7 @@
     <string name="packages_subtitle">Included packages</string>
 
     <!-- Label for power consumed by the screen -->
-    <string name="power_screen">Display</string>
+    <string name="power_screen">Screen</string>
     <!-- Label for power consumed by WiFi -->
     <string name="power_wifi">Wi-Fi</string>
     <!-- Label for power consumed by Bluetooth -->
@@ -2648,7 +2648,7 @@
     <!-- Label for app settings action -->
     <string name="battery_action_app_settings">Application settings</string>
     <!-- Label for display settings -->
-    <string name="battery_action_display">Display settings</string>
+    <string name="battery_action_display">Screen settings</string>
     <!-- Label for wifi settings -->
     <string name="battery_action_wifi">Wi-Fi settings</string>
     <!-- Label for bluetooth settings -->
diff --git a/src/com/android/settings/vpn/VpnEditor.java b/src/com/android/settings/vpn/VpnEditor.java
index f4f5828..d362793 100644
--- a/src/com/android/settings/vpn/VpnEditor.java
+++ b/src/com/android/settings/vpn/VpnEditor.java
@@ -22,6 +22,7 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.net.vpn.L2tpIpsecProfile;
@@ -152,17 +153,15 @@
     }*/
 
     private void initViewFor(VpnProfile profile) {
-        setTitle(profile);
         mProfileEditor.loadPreferencesTo(getPreferenceScreen());
     }
 
-    private void setTitle(VpnProfile profile) {
-        final Activity activity = getActivity();
-        String formatString = mAddingProfile
-                ? activity.getString(R.string.vpn_edit_title_add)
-                : activity.getString(R.string.vpn_edit_title_edit);
-        activity.setTitle(String.format(formatString,
-                profile.getType().getDisplayName()));
+    /* package */static String getTitle(Context context, VpnProfile profile, boolean adding) {
+        String formatString = adding
+                ? context.getString(R.string.vpn_edit_title_add)
+                : context.getString(R.string.vpn_edit_title_edit);
+        return String.format(formatString,
+                profile.getType().getDisplayName());
     }
 
     /**
diff --git a/src/com/android/settings/vpn/VpnSettings.java b/src/com/android/settings/vpn/VpnSettings.java
index ba6258c..e62a5ee 100644
--- a/src/com/android/settings/vpn/VpnSettings.java
+++ b/src/com/android/settings/vpn/VpnSettings.java
@@ -745,7 +745,7 @@
         // TODO: Show different titles for add and edit.
         ((PreferenceActivity)getActivity()).startPreferencePanel(
                 VpnEditor.class.getCanonicalName(), args,
-                add ? R.string.vpn_details_title : R.string.vpn_details_title, null,
+                0, VpnEditor.getTitle(getActivity(), profile, add),
                 this, REQUEST_ADD_OR_EDIT_PROFILE);
     }
 
