diff --git a/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php b/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php
index 4a313ea..cf57c1c 100644
--- a/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php
+++ b/src/Plugin/Field/FieldType/EntityReferenceRevisionsItem.php
@@ -277,7 +277,21 @@ class EntityReferenceRevisionsItem extends EntityReferenceItem implements Option
         }
         // Additionally ensure that the default revision state is kept in sync.
         if ($this->entity && $host->isDefaultRevision() != $this->entity->isDefaultRevision()) {
-          $this->entity->isDefaultRevision($host->isDefaultRevision());
+          $moderation_info = \Drupal::hasService('content_moderation.moderation_information') ? \Drupal::service('content_moderation.moderation_information') : NULL;
+          if ($moderation_info && $moderation_info->isModeratedEntity($host) && $host->moderation_state->value) {
+            $workflow = $moderation_info->getWorkflowForEntity($host);
+            /** @var \Drupal\content_moderation\ContentModerationState $current_state */
+            $current_state = $workflow->getTypePlugin()->getState($host->moderation_state->value);
+            // This entity is default if it is new, the default revision, or the
+            // default revision is not published.
+            $update_default_revision = $host->isNew()
+              || $current_state->isDefaultRevisionState()
+              || !$moderation_info->isDefaultRevisionPublished($host);
+            $this->entity->isDefaultRevision($update_default_revision);
+          }
+          else {
+            $this->entity->isDefaultRevision($host->isDefaultRevision());
+          }
           $needs_save = TRUE;
         }
       }
