diff --git a/assets/quantum/res/drawable/quantum_ic_exit_to_app_vd_theme_24.xml b/assets/quantum/res/drawable/quantum_ic_exit_to_app_flip_vd_theme_24.xml
similarity index 71%
rename from assets/quantum/res/drawable/quantum_ic_exit_to_app_vd_theme_24.xml
rename to assets/quantum/res/drawable/quantum_ic_exit_to_app_flip_vd_theme_24.xml
index 5279f04..3dfbf2b 100644
--- a/assets/quantum/res/drawable/quantum_ic_exit_to_app_vd_theme_24.xml
+++ b/assets/quantum/res/drawable/quantum_ic_exit_to_app_flip_vd_theme_24.xml
@@ -19,7 +19,11 @@
     android:viewportWidth="24.0"
     android:viewportHeight="24.0"
     android:tint="?attr/colorControlNormal">
-  <path
-      android:fillColor="@android:color/white"
-      android:pathData="M10.09,15.59L11.5,17l5,-5 -5,-5 -1.41,1.41L12.67,11H3v2h9.67l-2.58,2.59zM19,3H5c-1.11,0 -2,0.9 -2,2v4h2V5h14v14H5v-4H3v4c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"/>
+  <group
+      android:pivotX="12"
+      android:scaleX="-1">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M10.09,15.59L11.5,17l5,-5 -5,-5 -1.41,1.41L12.67,11H3v2h9.67l-2.58,2.59zM19,3H5c-1.11,0 -2,0.9 -2,2v4h2V5h14v14H5v-4H3v4c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2V5c0,-1.1 -0.9,-2 -2,-2z"/>
+  </group>
 </vector>
\ No newline at end of file
diff --git a/assets/quantum/res/drawable/quantum_ic_thumb_down_grey600_24.xml b/assets/quantum/res/drawable/quantum_ic_thumb_down_grey600_24.xml
new file mode 100644
index 0000000..fec2563
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_thumb_down_grey600_24.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:name="vector"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path
+        android:name="path"
+        android:pathData="M 15 3 L 6 3 C 5.17 3 4.46 3.5 4.16 4.22 L 1.14 11.27 C 1.05 11.5 1 11.74 1 12 L 1 13.91 L 1.01 13.92 L 1 14 C 1 15.1 1.9 16 3 16 L 9.31 16 L 8.36 20.57 L 8.33 20.89 C 8.33 21.3 8.5 21.68 8.77 21.95 L 9.83 23 L 16.42 16.41 C 16.78 16.05 17 15.55 17 15 L 17 5 C 17 3.9 16.1 3 15 3 Z M 19 3 L 19 15 L 23 15 L 23 3 L 19 3 Z"
+        android:fillColor="#757575"
+        android:strokeWidth="1"/>
+</vector>
diff --git a/assets/quantum/res/drawable/quantum_ic_thumb_up_grey600_24.xml b/assets/quantum/res/drawable/quantum_ic_thumb_up_grey600_24.xml
new file mode 100644
index 0000000..06a4cbd
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_thumb_up_grey600_24.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<vector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:name="vector"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path
+        android:name="path"
+        android:pathData="M 1 21 L 5 21 L 5 9 L 1 9 L 1 21 Z M 23 10 C 23 8.9 22.1 8 21 8 L 14.69 8 L 15.64 3.43 L 15.67 3.11 C 15.67 2.7 15.5 2.32 15.23 2.05 L 14.17 1 L 7.59 7.59 C 7.22 7.95 7 8.45 7 9 L 7 19 C 7 20.1 7.9 21 9 21 L 18 21 C 18.83 21 19.54 20.5 19.84 19.78 L 22.86 12.73 C 22.95 12.5 23 12.26 23 12 L 23 10.09 L 22.99 10.08 L 23 10 Z"
+        android:fillColor="#757575"
+        android:strokeWidth="1"/>
+</vector>
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
index e23d92c..82c9815 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
@@ -16,7 +16,9 @@
 
 package com.android.dialer.app.calllog;
 
+import android.app.AlertDialog;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.res.Resources;
 import android.graphics.Typeface;
 import android.net.Uri;
@@ -25,11 +27,18 @@
 import android.support.v4.content.ContextCompat;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
+import android.text.SpannableString;
+import android.text.Spanned;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
+import android.text.method.LinkMovementMethod;
+import android.text.style.TextAppearanceSpan;
+import android.text.style.URLSpan;
 import android.text.util.Linkify;
+import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.View;
+import android.widget.Button;
 import android.widget.TextView;
 import android.widget.Toast;
 import com.android.dialer.app.R;
@@ -41,7 +50,9 @@
 import com.android.dialer.logging.ContactSource;
 import com.android.dialer.oem.MotorolaUtils;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+import com.android.dialer.storage.StorageComponent;
 import com.android.dialer.util.DialerUtils;
+import com.android.voicemail.VoicemailClient;
 import com.android.voicemail.VoicemailComponent;
 import com.android.voicemail.impl.transcribe.TranscriptionRatingHelper;
 import com.google.internal.communications.voicemailtranscription.v1.TranscriptionRatingValue;
@@ -56,6 +67,9 @@
   /** The maximum number of icons will be shown to represent the call types in a group. */
   private static final int MAX_CALL_TYPE_ICONS = 3;
 
+  private static final String PREF_VOICEMAIL_DONATION_PROMO_SHOWN_KEY =
+      "pref_voicemail_donation_promo_shown_key";
+
   private final Context context;
   private final Resources resources;
   private final CallLogCache callLogCache;
@@ -165,15 +179,10 @@
 
       String transcript = "";
       String branding = "";
-      boolean showRatingPrompt = false;
       if (!TextUtils.isEmpty(details.transcription)) {
         transcript = details.transcription;
 
-        // Show a transcription quality rating prompt or set the branding text if the voicemail was
-        // transcribed by google
-        if (shouldShowTranscriptionRating(details.transcriptionState, details.accountHandle)) {
-          showRatingPrompt = true;
-        } else if (details.transcriptionState == VoicemailCompat.TRANSCRIPTION_AVAILABLE
+        if (details.transcriptionState == VoicemailCompat.TRANSCRIPTION_AVAILABLE
             || details.transcriptionState == VoicemailCompat.TRANSCRIPTION_AVAILABLE_AND_RATED) {
           branding = resources.getString(R.string.voicemail_transcription_branding_text);
         }
@@ -198,28 +207,25 @@
       }
 
       views.voicemailTranscriptionView.setText(transcript);
-      if (showRatingPrompt) {
-        views.voicemailTranscriptionBrandingView.setVisibility(View.GONE);
-        views.voicemailTranscriptionBrandingView.setText(branding);
+      views.voicemailTranscriptionBrandingView.setText(branding);
 
-        View ratingView = views.voicemailTranscriptionRatingView;
+      View ratingView = views.voicemailTranscriptionRatingView;
+      if (shouldShowTranscriptionRating(details.transcriptionState, details.accountHandle)) {
         ratingView.setVisibility(View.VISIBLE);
         ratingView
             .findViewById(R.id.voicemail_transcription_rating_good)
             .setOnClickListener(
                 view ->
                     recordTranscriptionRating(
-                        TranscriptionRatingValue.GOOD_TRANSCRIPTION, details));
+                        TranscriptionRatingValue.GOOD_TRANSCRIPTION, details, ratingView));
         ratingView
             .findViewById(R.id.voicemail_transcription_rating_bad)
             .setOnClickListener(
                 view ->
-                    recordTranscriptionRating(TranscriptionRatingValue.BAD_TRANSCRIPTION, details));
+                    recordTranscriptionRating(
+                        TranscriptionRatingValue.BAD_TRANSCRIPTION, details, ratingView));
       } else {
-        views.voicemailTranscriptionRatingView.setVisibility(View.GONE);
-
-        views.voicemailTranscriptionBrandingView.setVisibility(View.VISIBLE);
-        views.voicemailTranscriptionBrandingView.setText(branding);
+        ratingView.setVisibility(View.GONE);
       }
     }
 
@@ -237,22 +243,156 @@
 
   private boolean shouldShowTranscriptionRating(
       int transcriptionState, PhoneAccountHandle account) {
-    // TODO(mdooley): add a configurable random element here?
-    return transcriptionState == VoicemailCompat.TRANSCRIPTION_AVAILABLE
-        && VoicemailComponent.get(context)
-            .getVoicemailClient()
-            .isVoicemailDonationEnabled(context, account);
+    if (transcriptionState != VoicemailCompat.TRANSCRIPTION_AVAILABLE) {
+      return false;
+    }
+
+    VoicemailClient client = VoicemailComponent.get(context).getVoicemailClient();
+    if (client.isVoicemailDonationEnabled(context, account)) {
+      return true;
+    }
+
+    // Also show the rating option if voicemail transcription is available (but not enabled)
+    // and the donation promo has not yet been shown.
+    if (client.isVoicemailDonationAvailable(context) && !hasSeenVoicemailDonationPromo(context)) {
+      return true;
+    }
+
+    return false;
   }
 
   private void recordTranscriptionRating(
-      TranscriptionRatingValue ratingValue, PhoneCallDetails details) {
+      TranscriptionRatingValue ratingValue, PhoneCallDetails details, View ratingView) {
     LogUtil.enterBlock("PhoneCallDetailsHelper.recordTranscriptionRating");
-    TranscriptionRatingHelper.sendRating(
-        context,
-        ratingValue,
-        Uri.parse(details.voicemailUri),
-        this::onRatingSuccess,
-        this::onRatingFailure);
+
+    if (shouldShowVoicemailDonationPromo(context)) {
+      showVoicemailDonationPromo(ratingValue, details, ratingView);
+    } else {
+      TranscriptionRatingHelper.sendRating(
+          context,
+          ratingValue,
+          Uri.parse(details.voicemailUri),
+          this::onRatingSuccess,
+          this::onRatingFailure);
+    }
+  }
+
+  static boolean shouldShowVoicemailDonationPromo(Context context) {
+    VoicemailClient client = VoicemailComponent.get(context).getVoicemailClient();
+    return client.isVoicemailTranscriptionAvailable(context)
+        && client.isVoicemailDonationAvailable(context)
+        && !hasSeenVoicemailDonationPromo(context);
+  }
+
+  static boolean hasSeenVoicemailDonationPromo(Context context) {
+    return StorageComponent.get(context.getApplicationContext())
+        .unencryptedSharedPrefs()
+        .getBoolean(PREF_VOICEMAIL_DONATION_PROMO_SHOWN_KEY, false);
+  }
+
+  private void showVoicemailDonationPromo(
+      TranscriptionRatingValue ratingValue, PhoneCallDetails details, View ratingView) {
+    AlertDialog.Builder builder = new AlertDialog.Builder(context);
+    builder.setMessage(getVoicemailDonationPromoContent());
+    builder.setPositiveButton(
+        R.string.voicemail_donation_promo_opt_in,
+        new DialogInterface.OnClickListener() {
+          @Override
+          public void onClick(final DialogInterface dialog, final int button) {
+            LogUtil.i("PhoneCallDetailsHelper.showVoicemailDonationPromo", "onClick");
+            dialog.cancel();
+            recordPromoShown(context);
+            VoicemailComponent.get(context)
+                .getVoicemailClient()
+                .setVoicemailDonationEnabled(context, details.accountHandle, true);
+            TranscriptionRatingHelper.sendRating(
+                context,
+                ratingValue,
+                Uri.parse(details.voicemailUri),
+                PhoneCallDetailsHelper.this::onRatingSuccess,
+                PhoneCallDetailsHelper.this::onRatingFailure);
+            ratingView.setVisibility(View.GONE);
+          }
+        });
+    builder.setNegativeButton(
+        R.string.voicemail_donation_promo_opt_out,
+        new DialogInterface.OnClickListener() {
+          @Override
+          public void onClick(final DialogInterface dialog, final int button) {
+            dialog.cancel();
+            recordPromoShown(context);
+            ratingView.setVisibility(View.GONE);
+          }
+        });
+    builder.setCancelable(true);
+    AlertDialog dialog = builder.create();
+
+    // Use a custom title to prevent truncation, sigh
+    TextView title = new TextView(context);
+    title.setText(
+        ratingValue == TranscriptionRatingValue.GOOD_TRANSCRIPTION
+            ? R.string.voicemail_donation_promo_good_title
+            : R.string.voicemail_donation_promo_bad_title);
+    title.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL));
+    title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
+    title.setTextColor(ContextCompat.getColor(context, R.color.dialer_primary_text_color));
+    title.setPadding(
+        dpsToPixels(context, 24), /* left */
+        dpsToPixels(context, 10), /* top */
+        dpsToPixels(context, 24), /* right */
+        dpsToPixels(context, 0)); /* bottom */
+    dialog.setCustomTitle(title);
+
+    dialog.show();
+
+    // Make the message link clickable and adjust the appearance of the message and buttons
+    TextView textView = (TextView) dialog.findViewById(android.R.id.message);
+    textView.setLineSpacing(0, 1.2f);
+    textView.setMovementMethod(LinkMovementMethod.getInstance());
+    Button positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
+    if (positiveButton != null) {
+      positiveButton.setTextColor(
+          context
+              .getResources()
+              .getColor(R.color.voicemail_donation_promo_positive_button_text_color));
+    }
+    Button negativeButton = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
+    if (negativeButton != null) {
+      negativeButton.setTextColor(
+          context
+              .getResources()
+              .getColor(R.color.voicemail_donation_promo_negative_button_text_color));
+    }
+  }
+
+  private static int dpsToPixels(Context context, int dps) {
+    return (int)
+        (TypedValue.applyDimension(
+            TypedValue.COMPLEX_UNIT_DIP, dps, context.getResources().getDisplayMetrics()));
+  }
+
+  private static void recordPromoShown(Context context) {
+    StorageComponent.get(context.getApplicationContext())
+        .unencryptedSharedPrefs()
+        .edit()
+        .putBoolean(PREF_VOICEMAIL_DONATION_PROMO_SHOWN_KEY, true)
+        .apply();
+  }
+
+  private SpannableString getVoicemailDonationPromoContent() {
+    CharSequence content = context.getString(R.string.voicemail_donation_promo_content);
+    CharSequence learnMore = context.getString(R.string.voicemail_donation_promo_learn_more);
+    String learnMoreUrl = context.getString(R.string.voicemail_donation_promo_learn_more_url);
+    SpannableString span = new SpannableString(content + "\n" + learnMore);
+    int end = span.length();
+    int start = end - learnMore.length();
+    span.setSpan(new URLSpan(learnMoreUrl), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+    span.setSpan(
+        new TextAppearanceSpan(context, R.style.PromoLinkStyle),
+        start,
+        end,
+        Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+    return span;
   }
 
   @Override
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item.xml b/java/com/android/dialer/app/res/layout/call_log_list_item.xml
index a24552b..1b776b4 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item.xml
@@ -193,36 +193,27 @@
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:layout_weight="1"
-                  android:gravity="start"
+                  android:gravity="start|center_vertical"
                   android:focusable="true"
                   android:text="@string/voicemail_transcription_rating"/>
 
-              <TextView
-                  style="@style/TranscriptionQualityRatingLink"
+              <ImageView
+                  style="@style/TranscriptionQualityRatingIcon"
                   android:id="@+id/voicemail_transcription_rating_good"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
-                  android:gravity="end"
+                  android:gravity="end|center_vertical"
                   android:focusable="true"
-                  android:text="@string/voicemail_transcription_rating_good"/>
+                  android:src="@drawable/quantum_ic_thumb_up_grey600_24"/>
 
-              <TextView
-                  style="@style/TranscriptionQualityRating"
-                  android:id="@+id/voicemail_transcription_rating_separator"
-                  android:layout_width="wrap_content"
-                  android:layout_height="wrap_content"
-                  android:gravity="end"
-                  android:focusable="true"
-                  android:text="@string/voicemail_transcription_rating_separator"/>
-
-              <TextView
-                  style="@style/TranscriptionQualityRatingLink"
+              <ImageView
+                  style="@style/TranscriptionQualityRatingIcon"
                   android:id="@+id/voicemail_transcription_rating_bad"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
-                  android:gravity="end"
+                  android:gravity="end|center_vertical"
                   android:focusable="true"
-                  android:text="@string/voicemail_transcription_rating_bad"/>
+                  android:src="@drawable/quantum_ic_thumb_down_grey600_24"/>
 
             </LinearLayout>
 
diff --git a/java/com/android/dialer/app/res/values/colors.xml b/java/com/android/dialer/app/res/values/colors.xml
index 84a381f..e79c5c5 100644
--- a/java/com/android/dialer/app/res/values/colors.xml
+++ b/java/com/android/dialer/app/res/values/colors.xml
@@ -80,4 +80,7 @@
   <color name="blocked_number_disabled_emergency_background_color">#E0E0E0</color>
   <color name="add_blocked_number_icon_color">#bdbdbd</color>
 
+  <color name="voicemail_donation_promo_positive_button_text_color">#FF2A56C6</color>
+  <color name="voicemail_donation_promo_negative_button_text_color">#FF757575</color>
+
 </resources>
diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml
index d4f3f81..2d5542b 100644
--- a/java/com/android/dialer/app/res/values/strings.xml
+++ b/java/com/android/dialer/app/res/values/strings.xml
@@ -675,34 +675,39 @@
        [CHAR LIMIT=64] -->
   <string name="voicemail_transcription_failed_no_speech">Transcript not available. No speech detected.</string>
 
-  <!-- Prompt asking the user to rate the quality of the voicemail transcription [CHAR LIMIT=30]
-       voicemail_transcription_rating, voicemail_transcription_rating_good,
-       voicemail_transcription_rating_separator and voicemail_transcription_rating_bad are
-       used together to form the rating prompt: 'Rate transcription quality   Good or Bad'
-       where 'Good' and 'Bad' are clickable links. -->
+  <!-- Title of voicemail donation promo dialog, show after clicking a 'thumbs up' rating icon
+       [CHAR LIMIT=64] -->
+  <string name="voicemail_donation_promo_good_title">Thanks! Would you like to help us improve transcriptions?</string>
+
+  <!-- Title of voicemail donation promo dialog, show after clicking a 'thumbs up' rating icon
+       [CHAR LIMIT=64] -->
+  <string name="voicemail_donation_promo_bad_title">Sorry. Would you like to help us improve transcriptions?</string>
+
+  <!-- Content of voicemail donation promo dialog
+       [CHAR LIMIT=NONE] -->
+  <string name="voicemail_donation_promo_content">
+    Let Google review your voicemail messages to improve transcription quality. Your
+    voicemail messages will not be tied to your Google Account.
+  </string>
+
+  <!-- Text for a 'learn more' link at the end of the voicemail donation promo dialog content -->
+  <string name="voicemail_donation_promo_learn_more">Learn&#160;more</string>
+
+  <!-- TODO(mdooley): get real url -->
+  <string translatable="false" name="voicemail_donation_promo_learn_more_url">https:www.google.com</string>
+
+  <!-- Label for the voicemail donation promo dialog opt-in button
+       [CHAR LIMIT=20] -->
+  <string name="voicemail_donation_promo_opt_in">Yes, I\'m in</string>
+
+  <!-- Label for the voicemail donation promo dialog opt-out button
+       [CHAR LIMIT=20] -->
+  <string name="voicemail_donation_promo_opt_out">No thanks</string>
+
+  <!-- Prompt asking the user to rate the quality of the voicemail transcription
+       [CHAR LIMIT=30] -->
   <string name="voicemail_transcription_rating">Rate transcription quality</string>
 
-  <!-- Rating choice indicating that the voicemail transcription was good [CHAR LIMIT=10]
-       voicemail_transcription_rating, voicemail_transcription_rating_good,
-       voicemail_transcription_rating_separator and voicemail_transcription_rating_bad are
-       used together to form the rating prompt: 'Rate transcription quality   Good or Bad'
-       where 'Good' and 'Bad' are clickable links. -->
-  <string name="voicemail_transcription_rating_good">Good</string>
-
-  <!-- Rating choice indicating that the voicemail transcription was bad [CHAR LIMIT=10]
-       voicemail_transcription_rating, voicemail_transcription_rating_good,
-       voicemail_transcription_rating_separator and voicemail_transcription_rating_bad are
-       used together to form the rating prompt: 'Rate transcription quality   Good or Bad'
-       where 'Good' and 'Bad' are clickable links. -->
-  <string name="voicemail_transcription_rating_bad">Bad</string>
-
-  <!-- Separator between the good and bad transcription rating choices [CHAR LIMIT=10]
-       voicemail_transcription_rating, voicemail_transcription_rating_good,
-       voicemail_transcription_rating_separator and voicemail_transcription_rating_bad are
-       used together to form the rating prompt: 'Rate transcription quality   Good or Bad'
-       where 'Good' and 'Bad' are clickable links. -->
-  <string name="voicemail_transcription_rating_separator"> or </string>
-
   <!-- Message displayed after user has rated a voicemail transcription [CHAR LIMIT=30] -->
   <string name="voicemail_transcription_rating_thanks">Thanks for your feedback</string>
 
diff --git a/java/com/android/dialer/app/res/values/styles.xml b/java/com/android/dialer/app/res/values/styles.xml
index b275cec..869f127 100644
--- a/java/com/android/dialer/app/res/values/styles.xml
+++ b/java/com/android/dialer/app/res/values/styles.xml
@@ -258,15 +258,22 @@
   <style name="TranscriptionQualityRating">
     <item name="android:textColor">@color/call_log_voicemail_transcript_branding_color</item>
     <item name="android:textSize">@dimen/call_log_voicemail_transcription_text_size</item>
+    <item name="android:textStyle">italic</item>
+    <item name="android:paddingRight">20dp</item>
+    <item name="android:minHeight">56dp</item>
   </style>
 
-  <style name="TranscriptionQualityRatingLink">
-    <item name="android:textColor">@color/call_log_voicemail_transcript_rating_color</item>
-    <item name="android:textSize">@dimen/call_log_voicemail_transcription_text_size</item>
+  <style name="TranscriptionQualityRatingIcon">
     <item name="android:paddingTop">8dp</item>
     <item name="android:paddingBottom">8dp</item>
-    <item name="android:paddingLeft">12dp</item>
-    <item name="android:paddingRight">12dp</item>
-    <item name="android:minHeight">48dp</item>
+    <item name="android:paddingLeft">16dp</item>
+    <item name="android:paddingRight">16dp</item>
+    <item name="android:minHeight">56dp</item>
   </style>
+
+  <style name="PromoLinkStyle">
+    <item name="android:textColor">@color/dialer_theme_color</item>
+    <item name="android:fontFamily">"sans-serif-medium"</item>
+  </style>
+
 </resources>
diff --git a/java/com/android/dialer/theme/res/values/dimens.xml b/java/com/android/dialer/theme/res/values/dimens.xml
index 88b8a04..e7c9477 100644
--- a/java/com/android/dialer/theme/res/values/dimens.xml
+++ b/java/com/android/dialer/theme/res/values/dimens.xml
@@ -22,7 +22,7 @@
   <dimen name="call_log_primary_text_size">16sp</dimen>
   <dimen name="call_log_detail_text_size">12sp</dimen>
   <dimen name="call_log_day_group_heading_size">14sp</dimen>
-  <dimen name="call_log_voicemail_transcription_text_size">14sp</dimen>
+  <dimen name="call_log_voicemail_transcription_text_size">16sp</dimen>
   <!-- Height of the call log actions section for each call log entry -->
   <dimen name="call_log_action_height">48dp</dimen>
   <dimen name="call_log_day_group_padding_top">15dp</dimen>
diff --git a/java/com/android/incallui/NewReturnToCallController.java b/java/com/android/incallui/NewReturnToCallController.java
index e37b147..c588dc4 100644
--- a/java/com/android/incallui/NewReturnToCallController.java
+++ b/java/com/android/incallui/NewReturnToCallController.java
@@ -119,14 +119,6 @@
     }
   }
 
-  private void hideAndReset() {
-    if (bubble != null) {
-      bubble.hideAndReset();
-    } else {
-      LogUtil.i("ReturnToCallController.reset", "reset() called without calling show()");
-    }
-  }
-
   private void show() {
     if (bubble == null) {
       bubble = startBubble();
@@ -189,7 +181,7 @@
       if (!TelecomUtil.isInCall(context) || CallList.getInstance().getIncomingCall() != null) {
         bubble.showText(context.getText(R.string.incall_call_ended));
       }
-      hideAndReset();
+      hide();
     } else {
       startContactInfoSearch();
     }
@@ -258,7 +250,8 @@
     // Return to call
     actions.add(
         Action.builder()
-            .setIconDrawable(context.getDrawable(R.drawable.quantum_ic_exit_to_app_vd_theme_24))
+            .setIconDrawable(
+                context.getDrawable(R.drawable.quantum_ic_exit_to_app_flip_vd_theme_24))
             .setIntent(fullScreen)
             .setName(context.getText(R.string.bubble_return_to_call))
             .setCheckable(false)
diff --git a/java/com/android/newbubble/NewBubble.java b/java/com/android/newbubble/NewBubble.java
index 8f1be64..785593c 100644
--- a/java/com/android/newbubble/NewBubble.java
+++ b/java/com/android/newbubble/NewBubble.java
@@ -37,9 +37,6 @@
   /** Hide the bubble. */
   void hide();
 
-  /** Hide the bubble and reset to initial state */
-  void hideAndReset();
-
   /** Returns whether the bubble is currently visible */
   boolean isVisible();
 
diff --git a/java/com/android/newbubble/stub/NewBubbleStub.java b/java/com/android/newbubble/stub/NewBubbleStub.java
index 4079aaa..f5121cf 100644
--- a/java/com/android/newbubble/stub/NewBubbleStub.java
+++ b/java/com/android/newbubble/stub/NewBubbleStub.java
@@ -36,9 +36,6 @@
   public void hide() {}
 
   @Override
-  public void hideAndReset() {}
-
-  @Override
   public boolean isVisible() {
     return false;
   }
