diff --git a/update_manager/boxed_value.cc b/update_manager/boxed_value.cc
index c987110..9e2971d 100644
--- a/update_manager/boxed_value.cc
+++ b/update_manager/boxed_value.cc
@@ -144,12 +144,12 @@
       return "Unspecified";
     case RollbackToTargetVersion::kDisabled:
       return "Disabled";
-    case RollbackToTargetVersion::kRollbackWithFullPowerwash:
-      return "Rollback with full powerwash";
+    case RollbackToTargetVersion::kRollbackAndPowerwash:
+      return "Rollback and powerwash";
     case RollbackToTargetVersion::kRollbackAndRestoreIfPossible:
       return "Rollback and restore if possible";
-    case RollbackToTargetVersion::kRollbackWithRestoreOnly:
-      return "Rollback with restore only";
+    case RollbackToTargetVersion::kRollbackOnlyIfRestorePossible:
+      return "Rollback only if restore is possible";
     case RollbackToTargetVersion::kMaxValue:
       NOTREACHED();
       return "Max value";
diff --git a/update_manager/boxed_value_unittest.cc b/update_manager/boxed_value_unittest.cc
index b15a504..99d578c 100644
--- a/update_manager/boxed_value_unittest.cc
+++ b/update_manager/boxed_value_unittest.cc
@@ -203,19 +203,20 @@
             BoxedValue(
                 new RollbackToTargetVersion(RollbackToTargetVersion::kDisabled))
                 .ToString());
-  EXPECT_EQ("Rollback with full powerwash",
+  EXPECT_EQ("Rollback and powerwash",
             BoxedValue(new RollbackToTargetVersion(
-                           RollbackToTargetVersion::kRollbackWithFullPowerwash))
+                           RollbackToTargetVersion::kRollbackAndPowerwash))
                 .ToString());
   EXPECT_EQ(
       "Rollback and restore if possible",
       BoxedValue(new RollbackToTargetVersion(
                      RollbackToTargetVersion::kRollbackAndRestoreIfPossible))
           .ToString());
-  EXPECT_EQ("Rollback with restore only",
-            BoxedValue(new RollbackToTargetVersion(
-                           RollbackToTargetVersion::kRollbackWithRestoreOnly))
-                .ToString());
+  EXPECT_EQ(
+      "Rollback only if restore is possible",
+      BoxedValue(new RollbackToTargetVersion(
+                     RollbackToTargetVersion::kRollbackOnlyIfRestorePossible))
+          .ToString());
 }
 
 TEST(UmBoxedValueTest, SetConnectionTypeToString) {
diff --git a/update_manager/chromeos_policy_unittest.cc b/update_manager/chromeos_policy_unittest.cc
index f97d4ed..15bb09f 100644
--- a/update_manager/chromeos_policy_unittest.cc
+++ b/update_manager/chromeos_policy_unittest.cc
@@ -273,9 +273,9 @@
   EXPECT_FALSE(result.interactive);
 }
 
-TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedRollbackAllowed) {
+TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedRollbackAndPowerwash) {
   EXPECT_TRUE(TestRollbackAllowed(
-      true, RollbackToTargetVersion::kRollbackWithFullPowerwash));
+      true, RollbackToTargetVersion::kRollbackAndPowerwash));
 }
 
 TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedRollbackAndRestoreIfPossible) {
@@ -284,10 +284,10 @@
       true, RollbackToTargetVersion::kRollbackAndRestoreIfPossible));
 }
 
-TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedRollbackWithRestoreOnly) {
+TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedRollbackOnlyIfRestorePossible) {
   // We're not allowed to do rollback until we support data save and restore.
   EXPECT_FALSE(TestRollbackAllowed(
-      true, RollbackToTargetVersion::kRollbackWithRestoreOnly));
+      true, RollbackToTargetVersion::kRollbackOnlyIfRestorePossible));
 }
 
 TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedRollbackDisabled) {
@@ -308,7 +308,7 @@
   SetKioskAppControlsChromeOsVersion();
 
   EXPECT_TRUE(TestRollbackAllowed(
-      true, RollbackToTargetVersion::kRollbackWithFullPowerwash));
+      true, RollbackToTargetVersion::kRollbackAndPowerwash));
 }
 
 TEST_F(UmChromeOSPolicyTest, UpdateCheckAllowedKioskRollbackDisabled) {
diff --git a/update_manager/enterprise_device_policy_impl.cc b/update_manager/enterprise_device_policy_impl.cc
index 27f3d19..a3430ef 100644
--- a/update_manager/enterprise_device_policy_impl.cc
+++ b/update_manager/enterprise_device_policy_impl.cc
@@ -92,16 +92,17 @@
           LOG(INFO) << "Policy disables rollbacks.";
           result->rollback_allowed = false;
           break;
-        case RollbackToTargetVersion::kRollbackWithFullPowerwash:
-          LOG(INFO) << "Policy allows rollbacks.";
+        case RollbackToTargetVersion::kRollbackAndPowerwash:
+          LOG(INFO) << "Policy allows rollbacks with powerwash.";
           result->rollback_allowed = true;
           break;
         case RollbackToTargetVersion::kRollbackAndRestoreIfPossible:
-          LOG(INFO) << "Policy allows rollbacks, also restore if possible.";
+          LOG(INFO)
+              << "Policy allows rollbacks, also tries to restore if possible.";
           // We don't support restore yet, but policy still allows rollback.
           result->rollback_allowed = true;
           break;
-        case RollbackToTargetVersion::kRollbackWithRestoreOnly:
+        case RollbackToTargetVersion::kRollbackOnlyIfRestorePossible:
           LOG(INFO) << "Policy only allows rollbacks if restore is possible.";
           // We don't support restore yet, policy doesn't allow rollback in this
           // case.
diff --git a/update_manager/real_device_policy_provider_unittest.cc b/update_manager/real_device_policy_provider_unittest.cc
index 32e273d..e9c7b25 100644
--- a/update_manager/real_device_policy_provider_unittest.cc
+++ b/update_manager/real_device_policy_provider_unittest.cc
@@ -245,7 +245,7 @@
   loop_.RunOnce(false);
 
   UmTestUtils::ExpectVariableHasValue(
-      RollbackToTargetVersion::kRollbackWithFullPowerwash,
+      RollbackToTargetVersion::kRollbackAndPowerwash,
       provider_->var_rollback_to_target_version());
 }
 
diff --git a/update_manager/rollback_prefs.h b/update_manager/rollback_prefs.h
index 07e1834..11d09d6 100644
--- a/update_manager/rollback_prefs.h
+++ b/update_manager/rollback_prefs.h
@@ -29,9 +29,9 @@
 enum class RollbackToTargetVersion {
   kUnspecified = 0,
   kDisabled = 1,
-  kRollbackWithFullPowerwash = 2,
+  kRollbackAndPowerwash = 2,
   kRollbackAndRestoreIfPossible = 3,
-  kRollbackWithRestoreOnly = 4,
+  kRollbackOnlyIfRestorePossible = 4,
   // This value must be the last entry.
   kMaxValue = 5
 };
