diff --git a/java/com/android/dialer/calllogutils/CallLogEntryText.java b/java/com/android/dialer/calllogutils/CallLogEntryText.java
index 737b1d3..ab851cb 100644
--- a/java/com/android/dialer/calllogutils/CallLogEntryText.java
+++ b/java/com/android/dialer/calllogutils/CallLogEntryText.java
@@ -70,7 +70,8 @@
    * <ul>
    *   <li>For numbers that are not spam or blocked: (Duo video, )?$Label|$Location • Date
    *   <li>For blocked non-spam numbers: Blocked • (Duo video, )?$Label|$Location • Date
-   *   <li>For spam numbers: Spam • (Duo video, )?$Label • Date
+   *   <li>For spam but not blocked numbers: Spam • (Duo video, )?$Label • Date
+   *   <li>For blocked spam numbers: Blocked • Spam • (Duo video, )?$Label • Date
    * </ul>
    *
    * <p>Examples:
@@ -84,6 +85,7 @@
    *   <li>Blocked • Brooklyn, NJ • 10 min ago
    *   <li>Spam • Mobile • Now
    *   <li>Spam • Now
+   *   <li>Blocked • Spam • Mobile • Now
    *   <li>Brooklyn, NJ • Jan 15
    * </ul>
    *
@@ -93,11 +95,11 @@
       Context context, Clock clock, CoalescedRow row) {
     List<CharSequence> components = new ArrayList<>();
 
-    // If a number is both spam and blocked, only show "Spam".
+    if (row.numberAttributes().getIsBlocked()) {
+      components.add(context.getText(R.string.new_call_log_secondary_blocked));
+    }
     if (row.numberAttributes().getIsSpam()) {
       components.add(context.getText(R.string.new_call_log_secondary_spam));
-    } else if (row.numberAttributes().getIsBlocked()) {
-      components.add(context.getText(R.string.new_call_log_secondary_blocked));
     }
 
     components.add(getNumberTypeLabel(context, row));
@@ -121,8 +123,10 @@
      *     (Duo video, )?$Label|$Location [• NumberIfNoName]?
      *   For blocked non-spam numbers:
      *     Blocked • (Duo video, )?$Label|$Location [• NumberIfNoName]?
-     *   For spam numbers:
+     *   For spam but not blocked numbers:
      *     Spam • (Duo video, )?$Label [• NumberIfNoName]?
+     *   For blocked spam numbers:
+     *     Blocked • Spam • (Duo video, )?$Label [• NumberIfNoName]?
      *
      * The number is shown at the end if there is no name for the entry. (It is shown in primary
      * text otherwise.)
@@ -139,11 +143,11 @@
      */
     List<CharSequence> components = new ArrayList<>();
 
-    // If a number is both spam and blocked, only show "Spam".
+    if (row.numberAttributes().getIsBlocked()) {
+      components.add(context.getText(R.string.new_call_log_secondary_blocked));
+    }
     if (row.numberAttributes().getIsSpam()) {
       components.add(context.getText(R.string.new_call_log_secondary_spam));
-    } else if (row.numberAttributes().getIsBlocked()) {
-      components.add(context.getText(R.string.new_call_log_secondary_blocked));
     }
 
     components.add(getNumberTypeLabel(context, row));
diff --git a/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java b/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java
index c6d9205..10c4dfb 100644
--- a/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java
+++ b/java/com/android/dialer/glidephotomanager/impl/GlidePhotoManagerImpl.java
@@ -68,13 +68,13 @@
     // Warning: Glide ignores extra attributes on BitmapDrawable such as tint and draw the bitmap
     // directly so be sure not to set tint in the XML of any drawable referenced below.
 
-    // The spam status takes precedence over whether the number is blocked.
-    if (photoInfo.isSpam()) {
-      return requestManager.load(R.drawable.ic_report_red_48dp);
-    }
+    // Whether the number is blocked takes precedence over the spam status.
     if (photoInfo.isBlocked()) {
       return requestManager.load(R.drawable.ic_block_grey_48dp);
     }
+    if (photoInfo.isSpam()) {
+      return requestManager.load(R.drawable.ic_report_red_48dp);
+    }
     if (!TextUtils.isEmpty(photoInfo.photoUri())) {
       return requestManager.load(parseUri(photoInfo.photoUri()));
     }
