diff --git a/recovery_ui/include/recovery_ui/screen_ui.h b/recovery_ui/include/recovery_ui/screen_ui.h
index f4b4733..c998b71 100644
--- a/recovery_ui/include/recovery_ui/screen_ui.h
+++ b/recovery_ui/include/recovery_ui/screen_ui.h
@@ -440,7 +440,7 @@
     return menu_char_width_;
   }
   int MenuItemPadding() const override {
-    return menu_char_height_ * 2 / 3;
+    return menu_char_height_;
   }
 
   std::unique_ptr<MenuDrawFunctions> menu_draw_funcs_;
diff --git a/recovery_ui/screen_ui.cpp b/recovery_ui/screen_ui.cpp
index 07af7ac..94fc33a 100644
--- a/recovery_ui/screen_ui.cpp
+++ b/recovery_ui/screen_ui.cpp
@@ -188,7 +188,6 @@
   int item_container_offset = offset; // store it for drawing scrollbar on most top
 
   for (size_t i = MenuStart(); i < MenuEnd(); ++i) {
-    bool bold = false;
     if (i == selection()) {
       // Draw the highlight bar.
       draw_funcs_.SetColor(long_press ? UIElement::MENU_SEL_BG_ACTIVE : UIElement::MENU_SEL_BG);
@@ -196,11 +195,10 @@
       int bar_height = padding + char_height_ + padding;
       draw_funcs_.DrawHighlightBar(0, y + offset, screen_width, bar_height);
 
-      // Bold white text for the selected item.
+      // Colored text for the selected item.
       draw_funcs_.SetColor(UIElement::MENU_SEL_FG);
-      bold = true;
     }
-    offset += draw_funcs_.DrawTextLine(x, y + offset, TextItem(i), bold);
+    offset += draw_funcs_.DrawTextLine(x, y + offset, TextItem(i), false /* bold */);
 
     draw_funcs_.SetColor(UIElement::MENU);
   }
@@ -561,25 +559,39 @@
   }
 }
 
-/* Lineage teal: #167c80 */
+/* recovery dark:  #7C4DFF
+   recovery light: #F890FF
+   fastbootd dark: #E65100
+   fastboot light: #FDD835 */
 void ScreenRecoveryUI::SetColor(UIElement e) const {
   switch (e) {
     case UIElement::INFO:
       gr_color(249, 194, 0, 255);
       break;
     case UIElement::HEADER:
-      gr_color(247, 0, 6, 255);
+      if (fastbootd_logo_enabled_)
+        gr_color(0xfd, 0xd8,0x35, 255);
+      else
+        gr_color(0xf8, 0x90, 0xff, 255);
       break;
     case UIElement::MENU:
-    case UIElement::MENU_SEL_BG:
       gr_color(0xd8, 0xd8, 0xd8, 255);
       break;
+    case UIElement::MENU_SEL_BG:
+    case UIElement::SCROLLBAR:
+      if (fastbootd_logo_enabled_)
+        gr_color(0xe6, 0x51, 0x00, 255);
+      else
+        gr_color(0x7c, 0x4d, 0xff, 255);
+      break;
     case UIElement::MENU_SEL_BG_ACTIVE:
       gr_color(0, 156, 100, 255);
       break;
     case UIElement::MENU_SEL_FG:
-    case UIElement::SCROLLBAR:
-      gr_color(0x16, 0x7c, 0x80, 255);
+      if (fastbootd_logo_enabled_)
+        gr_color(0, 0, 0, 255);
+      else
+        gr_color(0xd8, 0xd8, 0xd8, 255);
       break;
     case UIElement::LOG:
       gr_color(196, 196, 196, 255);
@@ -813,6 +825,7 @@
         gr_blit(back_icon_sel_ && menu_->selection() == -1 ? back_icon_sel_.get() : back_icon_.get(),
                 0, 0, icon_w, icon_h, icon_x, icon_y);
       }
+      y += MenuItemPadding();
     } else {
       for (size_t i = 0; i < title_lines_.size(); i++) {
         y += DrawTextLine(x, y, title_lines_[i], i == 0);
diff --git a/res-hdpi/images/ic_back.png b/res-hdpi/images/ic_back.png
index ec1ea23..ae11ddf 100644
--- a/res-hdpi/images/ic_back.png
+++ b/res-hdpi/images/ic_back.png
Binary files differ
diff --git a/res-hdpi/images/ic_back_sel.png b/res-hdpi/images/ic_back_sel.png
index 2b154d1..13fcaea 100644
--- a/res-hdpi/images/ic_back_sel.png
+++ b/res-hdpi/images/ic_back_sel.png
Binary files differ
diff --git a/res-mdpi/images/ic_back.png b/res-mdpi/images/ic_back.png
index 4af9ce6..1e7b9c0 100644
--- a/res-mdpi/images/ic_back.png
+++ b/res-mdpi/images/ic_back.png
Binary files differ
diff --git a/res-mdpi/images/ic_back_sel.png b/res-mdpi/images/ic_back_sel.png
index 4e8152c..b9a013b 100644
--- a/res-mdpi/images/ic_back_sel.png
+++ b/res-mdpi/images/ic_back_sel.png
Binary files differ
diff --git a/res-xhdpi/images/ic_back.png b/res-xhdpi/images/ic_back.png
index 6dbb706..0009d50 100644
--- a/res-xhdpi/images/ic_back.png
+++ b/res-xhdpi/images/ic_back.png
Binary files differ
diff --git a/res-xhdpi/images/ic_back_sel.png b/res-xhdpi/images/ic_back_sel.png
index 20e5451..f69573d 100644
--- a/res-xhdpi/images/ic_back_sel.png
+++ b/res-xhdpi/images/ic_back_sel.png
Binary files differ
diff --git a/res-xxhdpi/images/ic_back.png b/res-xxhdpi/images/ic_back.png
index fef2271..eb1d0c2 100644
--- a/res-xxhdpi/images/ic_back.png
+++ b/res-xxhdpi/images/ic_back.png
Binary files differ
diff --git a/res-xxhdpi/images/ic_back_sel.png b/res-xxhdpi/images/ic_back_sel.png
index 50dc557..4657b57 100644
--- a/res-xxhdpi/images/ic_back_sel.png
+++ b/res-xxhdpi/images/ic_back_sel.png
Binary files differ
diff --git a/res-xxxhdpi/images/ic_back.png b/res-xxxhdpi/images/ic_back.png
index b41f557..481305e 100644
--- a/res-xxxhdpi/images/ic_back.png
+++ b/res-xxxhdpi/images/ic_back.png
Binary files differ
diff --git a/res-xxxhdpi/images/ic_back_sel.png b/res-xxxhdpi/images/ic_back_sel.png
index b7f604c..efe1b02 100644
--- a/res-xxxhdpi/images/ic_back_sel.png
+++ b/res-xxxhdpi/images/ic_back_sel.png
Binary files differ
