diff --git a/recovery_ui/include/recovery_ui/screen_ui.h b/recovery_ui/include/recovery_ui/screen_ui.h
index b6b0b49..f11e635 100644
--- a/recovery_ui/include/recovery_ui/screen_ui.h
+++ b/recovery_ui/include/recovery_ui/screen_ui.h
@@ -92,7 +92,7 @@
  public:
   virtual ~Menu() = default;
   // Returns the current menu selection.
-  size_t selection() const;
+  int selection() const;
   // Sets the current selection to |sel|. Handle the overflow cases depending on if the menu is
   // scrollable.
   virtual int Select(int sel) = 0;
@@ -112,7 +112,7 @@
  protected:
   Menu(size_t initial_selection, const DrawInterface& draw_func);
   // Current menu selection.
-  size_t selection_;
+  int selection_;
   // Reference to the class that implements all the draw functions.
   const DrawInterface& draw_funcs_;
 };
@@ -444,6 +444,7 @@
 
   std::unique_ptr<GRSurface> lineage_logo_;
   std::unique_ptr<GRSurface> back_icon_;
+  std::unique_ptr<GRSurface> back_icon_sel_;
   std::unique_ptr<GRSurface> fastbootd_logo_;
 
   // current_icon_ points to one of the frames in intro_frames_ or loop_frames_, indexed by
diff --git a/recovery_ui/screen_ui.cpp b/recovery_ui/screen_ui.cpp
index c3273db..470e22e 100644
--- a/recovery_ui/screen_ui.cpp
+++ b/recovery_ui/screen_ui.cpp
@@ -57,7 +57,7 @@
 Menu::Menu(size_t initial_selection, const DrawInterface& draw_func)
     : selection_(initial_selection), draw_funcs_(draw_func) {}
 
-size_t Menu::selection() const {
+int Menu::selection() const {
   return selection_;
 }
 
@@ -110,7 +110,7 @@
   }
 
   *cur_selection_str =
-      android::base::StringPrintf("Current item: %zu/%zu", selection_ + 1, ItemsCount());
+      android::base::StringPrintf("Current item: %d/%zu", selection_ + 1, ItemsCount());
   return true;
 }
 
@@ -119,12 +119,14 @@
   CHECK_LE(ItemsCount(), static_cast<size_t>(std::numeric_limits<int>::max()));
   int count = ItemsCount();
 
+  int min = IsMain() ? 0 : -1; // -1 is back arrow
+
   // Wraps the selection at boundary if the menu is not scrollable.
   if (!scrollable_) {
-    if (sel < 0) {
+    if (sel < min) {
       selection_ = count - 1;
     } else if (sel >= count) {
-      selection_ = 0;
+      selection_ = min;
     } else {
       selection_ = sel;
     }
@@ -132,15 +134,17 @@
     return selection_;
   }
 
-  if (sel < 0) {
-    selection_ = 0;
+  if (sel < min) {
+    selection_ = min;
   } else if (sel >= count) {
     selection_ = count - 1;
   } else {
-    if (static_cast<size_t>(sel) < menu_start_) {
-      menu_start_--;
-    } else if (static_cast<size_t>(sel) >= MenuEnd()) {
-      menu_start_++;
+    if (sel >= 0) {
+      if (static_cast<size_t>(sel) < menu_start_) {
+        menu_start_--;
+      } else if (static_cast<size_t>(sel) >= MenuEnd()) {
+        menu_start_++;
+      }
     }
     selection_ = sel;
   }
@@ -825,7 +829,8 @@
         auto icon_h = gr_get_height(back_icon_.get());
         auto icon_x = centered_x / 2 - icon_w / 2;
         auto icon_y = y - logo_height / 2 - icon_h / 2;
-        gr_blit(back_icon_.get(), 0, 0, icon_w, icon_h, icon_x, icon_y);
+        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);
       }
     } else {
       for (size_t i = 0; i < title_lines_.size(); i++) {
@@ -1022,6 +1027,7 @@
 
   lineage_logo_ = LoadBitmap("logo_image");
   back_icon_ = LoadBitmap("ic_back");
+  back_icon_sel_ = LoadBitmap("ic_back_sel");
   if (android::base::GetBoolProperty("ro.boot.dynamic_partitions", false) ||
       android::base::GetBoolProperty("ro.fastbootd.available", false)) {
     fastbootd_logo_ = LoadBitmap("fastbootd");
@@ -1423,7 +1429,11 @@
           selected = ScrollMenu(1);
           break;
         case Device::kInvokeItem:
-          chosen_item = selected;
+          if (selected < 0) {
+            chosen_item = Device::kGoBack;
+          } else {
+            chosen_item = selected;
+          }
           break;
         case Device::kNoAction:
           break;
diff --git a/res-hdpi/images/ic_back_sel.png b/res-hdpi/images/ic_back_sel.png
new file mode 100644
index 0000000..2b154d1
--- /dev/null
+++ b/res-hdpi/images/ic_back_sel.png
Binary files differ
diff --git a/res-mdpi/images/ic_back_sel.png b/res-mdpi/images/ic_back_sel.png
new file mode 100644
index 0000000..4e8152c
--- /dev/null
+++ b/res-mdpi/images/ic_back_sel.png
Binary files differ
diff --git a/res-xhdpi/images/ic_back_sel.png b/res-xhdpi/images/ic_back_sel.png
new file mode 100644
index 0000000..20e5451
--- /dev/null
+++ b/res-xhdpi/images/ic_back_sel.png
Binary files differ
diff --git a/res-xxhdpi/images/ic_back_sel.png b/res-xxhdpi/images/ic_back_sel.png
new file mode 100644
index 0000000..50dc557
--- /dev/null
+++ b/res-xxhdpi/images/ic_back_sel.png
Binary files differ
diff --git a/res-xxxhdpi/images/ic_back_sel.png b/res-xxxhdpi/images/ic_back_sel.png
new file mode 100644
index 0000000..b7f604c
--- /dev/null
+++ b/res-xxxhdpi/images/ic_back_sel.png
Binary files differ
