diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 9aebdbf..49d72b4 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -40,7 +40,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
-import com.android.settings.accessibility.AccessibilitySettingsForSetupWizardActivity;
 import com.android.settings.applications.LayoutPreference;
 import com.android.settings.widget.FloatingActionButton;
 
@@ -164,8 +163,7 @@
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
-        if (!TextUtils.isEmpty(mHelpUri)
-                && !(getActivity() instanceof AccessibilitySettingsForSetupWizardActivity)) {
+        if (!TextUtils.isEmpty(mHelpUri)) {
             setHasOptionsMenu(true);
         }
     }
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
index 26f5f39..35bb83b 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
@@ -17,14 +17,18 @@
 package com.android.settings.accessibility;
 
 import android.accessibilityservice.AccessibilityServiceInfo;
+import android.content.ActivityNotFoundException;
 import android.content.ComponentName;
 import android.content.ContentResolver;
 import android.content.Context;
+import android.content.Intent;
 import android.content.pm.ServiceInfo;
 import android.content.res.Resources;
 import android.os.Bundle;
+import android.os.Handler;
 import android.provider.Settings;
 import android.support.v7.preference.Preference;
+import android.util.Log;
 import android.view.accessibility.AccessibilityManager;
 
 import com.android.internal.logging.MetricsProto;
@@ -40,16 +44,30 @@
 public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragment
         implements DialogCreatable, Preference.OnPreferenceChangeListener {
 
+    private static final String TAG = AccessibilitySettingsForSetupWizard.class.getSimpleName();
+
     // Preferences.
     private static final String DISPLAY_MAGNIFICATION_PREFERENCE =
             "screen_magnification_preference";
-    private static final String TALKBACK_PREFERENCE = "talkback_preference";
+    private static final String SCREEN_READER_PREFERENCE = "talkback_preference";
     private static final String FONT_SIZE_PREFERENCE = "font_size_preference";
 
+    // Time needed to let Talkback initialize its self before launching the tutorial.
+    private static final long SCREEN_READER_INITIALIZATION_DELAY_MS = 3000;
+
+    private String mTalkbackPackage;
+
     // Preference controls.
     private Preference mDisplayMagnificationPreference;
     private Preference mTalkbackPreference;
 
+    private Runnable mStartTalkbackRunnable = new Runnable() {
+        @Override
+        public void run() {
+            launchTalkbackTutorial();
+        }
+    };
+
     @Override
     protected int getMetricsCategory() {
         return MetricsProto.MetricsEvent.ACCESSIBILITY;
@@ -61,7 +79,7 @@
         addPreferencesFromResource(R.xml.accessibility_settings_for_setup_wizard);
 
         mDisplayMagnificationPreference = findPreference(DISPLAY_MAGNIFICATION_PREFERENCE);
-        mTalkbackPreference = findPreference(TALKBACK_PREFERENCE);
+        mTalkbackPreference = findPreference(SCREEN_READER_PREFERENCE);
     }
 
     @Override
@@ -75,41 +93,16 @@
         return false;
     }
 
-    /**
-     * Returns a semicolon-delimited string containing a list of all the
-     * installed {@link AccessibilityService}s that provide at least one
-     * required feedback type.
-     *
-     * @param context The {@link android.app.Activity} context.
-     * @param requiredFeedbackTypes An integer mask containing the required
-     *            feedback types.
-     * @return A semicolon-delimited string containing a list of accessibility services.
-     */
-    private String getAccessibilityServicesFiltered(
-            Context context, int requiredFeedbackTypes) {
-        final AccessibilityManager manager = context.getSystemService(AccessibilityManager.class);
-        final List<AccessibilityServiceInfo> accessibilityServices = manager
-                .getInstalledAccessibilityServiceList();
-        final StringBuilder servicesToEnable = new StringBuilder();
-
-        for (AccessibilityServiceInfo accessibilityService : accessibilityServices) {
-            if ((accessibilityService.feedbackType & requiredFeedbackTypes) == 0) {
-                continue;
-            }
-
-            final ServiceInfo serviceInfo = accessibilityService.getResolveInfo().serviceInfo;
-            final ComponentName componentName = new ComponentName(serviceInfo.packageName,
-                    serviceInfo.name);
-
-            servicesToEnable.append(componentName.flattenToString());
-            servicesToEnable.append(':');
+    private void launchTalkbackTutorial() {
+        try {
+            Intent intent = new Intent(Settings.ACTION_SCREEN_READER_TUTORIAL);
+            intent.setPackage(mTalkbackPackage);
+            startActivity(intent);
+        } catch (ActivityNotFoundException e) {
+            // This can happen if either the build is misconfigued or an OEM removes the intent
+            // filter for the Talkback tutorial from their implementation of Talkback.
+            Log.e(TAG, "Can't find Talkback Tutorial: " + Settings.ACTION_SCREEN_READER_TUTORIAL);
         }
-
-        if (servicesToEnable.length() > 0) {
-            servicesToEnable.deleteCharAt(servicesToEnable.length() - 1);
-        }
-
-        return servicesToEnable.toString();
     }
 
     @Override
@@ -130,17 +123,34 @@
             final int accessibilityEnabled =
                     Settings.Secure.getInt(resolver, Settings.Secure.ACCESSIBILITY_ENABLED, 0);
             if (accessibilityEnabled == 0) {
-                final String servicesToEnable = getAccessibilityServicesFiltered(
-                        getActivity(), AccessibilityServiceInfo.FEEDBACK_SPOKEN);
+                // Find the first installed screen reader.
+                String serviceToEnable = null;
+                final AccessibilityManager manager =
+                        getActivity().getSystemService(AccessibilityManager.class);
+                final List<AccessibilityServiceInfo> accessibilityServices =
+                        manager.getInstalledAccessibilityServiceList();
+                for (AccessibilityServiceInfo accessibilityService : accessibilityServices) {
+                    if ((accessibilityService.feedbackType
+                            & AccessibilityServiceInfo.FEEDBACK_SPOKEN) != 0) {
+                        final ServiceInfo serviceInfo =
+                                accessibilityService.getResolveInfo().serviceInfo;
+                        mTalkbackPackage = serviceInfo.packageName;
+                        final ComponentName componentName =
+                                new ComponentName(serviceInfo.packageName, serviceInfo.name);
+
+                        serviceToEnable = componentName.flattenToString();
+                        break;
+                    }
+                }
 
                 // Enable all accessibility services with spoken feedback type.
                 Settings.Secure.putString(resolver, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
-                        servicesToEnable);
+                        serviceToEnable);
 
                 // Allow the services we just enabled to toggle touch exploration.
                 Settings.Secure.putString(resolver,
                         Settings.Secure.TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES,
-                        servicesToEnable);
+                        serviceToEnable);
 
                 // Enable touch exploration.
                 Settings.Secure.putInt(resolver, Settings.Secure.TOUCH_EXPLORATION_ENABLED, 1);
@@ -148,6 +158,13 @@
                 // Turn on accessibility mode last, since enabling accessibility with no
                 // services has no effect.
                 Settings.Secure.putInt(resolver, Settings.Secure.ACCESSIBILITY_ENABLED, 1);
+
+                // Since Talkback will display an error message if it's not active when the Tutorial
+                // is launched, launch Talkbck Tutorial with a delay.
+                new Handler().postDelayed(mStartTalkbackRunnable,
+                        SCREEN_READER_INITIALIZATION_DELAY_MS);
+            } else {
+                launchTalkbackTutorial();
             }
         }
 
diff --git a/src/com/android/settings/display/ScreenZoomSettings.java b/src/com/android/settings/display/ScreenZoomSettings.java
index 406c993..d87f230 100644
--- a/src/com/android/settings/display/ScreenZoomSettings.java
+++ b/src/com/android/settings/display/ScreenZoomSettings.java
@@ -50,7 +50,7 @@
         // This should be replaced once the final preview sample screen is in place.
         mPreviewSampleResIds = new int[]{R.layout.screen_zoom_preview_1,
                 R.layout.screen_zoom_preview_2,
-                R.layout.screen_zoom_preview_3};
+                R.layout.screen_zoom_preview_settings};
 
         final DisplayDensityUtils density = new DisplayDensityUtils(getContext());
 
