diff --git a/core/lib/Drupal/Core/Entity/EntityBCDecorator.php b/core/lib/Drupal/Core/Entity/EntityBCDecorator.php
index 8f5e521..995e080 100644
--- a/core/lib/Drupal/Core/Entity/EntityBCDecorator.php
+++ b/core/lib/Drupal/Core/Entity/EntityBCDecorator.php
@@ -72,19 +72,29 @@ public function &__get($name) {
       // avoid them becoming out of sync.
       unset($this->decorated->fields[$name]);
     }
-    // Allow accessing field values in entity default languages other than
-    // LANGUAGE_DEFAULT by mapping the values to LANGUAGE_DEFAULT.
-    $langcode = $this->decorated->language()->langcode;
-    if ($langcode != LANGUAGE_DEFAULT && isset($this->decorated->values[$name]) && is_array($this->decorated->values[$name])) {
-      if (isset($this->decorated->values[$name][LANGUAGE_DEFAULT]) && !isset($this->decorated->values[$name][$langcode])) {
-        $this->decorated->values[$name][$langcode] = &$this->decorated->values[$name][LANGUAGE_DEFAULT];
+    // When accessing values for entity properties that have been converted to
+    // an entity field, provide direct access to the plain value. This makes it
+    // possible to use the BC-decorator with properties; e.g., $node->title.
+    if (!field_info_field($name) && $this->decorated->getPropertyDefinition($name)) {
+      if (!isset($this->decorated->values[$name][LANGUAGE_DEFAULT][0]['value'])) {
+        $this->decorated->values[$name][LANGUAGE_DEFAULT][0]['value'] = NULL;
       }
+      return $this->decorated->values[$name][LANGUAGE_DEFAULT][0]['value'];
     }
-
-    if (!isset($this->decorated->values[$name])) {
-      $this->decorated->values[$name] = NULL;
+    else {
+      // Allow accessing field values in entity default languages other than
+      // LANGUAGE_DEFAULT by mapping the values to LANGUAGE_DEFAULT.
+      $langcode = $this->decorated->language()->langcode;
+      if ($langcode != LANGUAGE_DEFAULT && isset($this->decorated->values[$name]) && is_array($this->decorated->values[$name])) {
+        if (isset($this->decorated->values[$name][LANGUAGE_DEFAULT]) && !isset($this->decorated->values[$name][$langcode])) {
+          $this->decorated->values[$name][$langcode] = &$this->decorated->values[$name][LANGUAGE_DEFAULT];
+        }
+      }
+      if (!isset($this->decorated->values[$name])) {
+        $this->decorated->values[$name] = NULL;
+      }
+      return $this->decorated->values[$name];
     }
-    return $this->decorated->values[$name];
   }
 
   /**
@@ -93,17 +103,25 @@ public function &__get($name) {
    * Directly writes to the plain field values, as done by Drupal 7.
    */
   public function __set($name, $value) {
-    if (is_array($value) && $definition = $this->decorated->getPropertyDefinition($name)) {
-      // If field API sets a value with a langcode in entity language, move it
-      // to LANGUAGE_DEFAULT.
-      foreach ($value as $langcode => $data) {
-        if ($langcode != LANGUAGE_DEFAULT && $langcode == $this->decorated->language()->langcode) {
-          $value[LANGUAGE_DEFAULT] = $data;
-          unset($value[$langcode]);
+    // When updating values for entity properties that have been converted to
+    // an entity field, directly write to the plain value. This makes it
+    // possible to use the BC-decorator with properties; e.g., $node->title.
+    if (!field_info_field($name) && $this->decorated->getPropertyDefinition($name)) {
+      $this->decorated->values[$name][LANGUAGE_DEFAULT][0]['value'] = $value;
+    }
+    else {
+      if (is_array($value) && $definition = $this->decorated->getPropertyDefinition($name)) {
+        // If field API sets a value with a langcode in entity language, move it
+        // to LANGUAGE_DEFAULT.
+        foreach ($value as $langcode => $data) {
+          if ($langcode != LANGUAGE_DEFAULT && $langcode == $this->decorated->language()->langcode) {
+            $value[LANGUAGE_DEFAULT] = $data;
+            unset($value[$langcode]);
+          }
         }
       }
+      $this->decorated->values[$name] = $value;
     }
-    $this->decorated->values[$name] = $value;
     unset($this->decorated->fields[$name]);
   }
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFieldTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFieldTest.php
index f01d440..ce8f7cf 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFieldTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityFieldTest.php
@@ -537,4 +537,28 @@ protected function assertComputedProperties($entity_type) {
     $entity = entity_load($entity_type, $entity->id());
     $this->assertEqual($entity->field_test_text->processed, $target, format_string('%entity_type: Text is processed with the default filter.', array('%entity_type' => $entity_type)));
   }
+
+  /**
+   * Tests using the entity BC decorator with entity properties.
+   *
+   * @todo: Remove once the entit BC decorator is removed.
+   * @see \Drupal\Core\Entity\EntityBCDecorator
+   */
+  public function testBCDecorator() {
+    // Test using comment subject via the BC decorator.
+    module_enable(array('node', 'comment'));
+    $node = $this->drupalCreateNode();
+    $comment = entity_create('comment', array(
+      'nid' => $node->nid,
+      'subject' => 'old-value',
+    ));
+    $comment->save();
+
+    // Test reading.
+    $bc_entity = $comment->getBCEntity();
+    $this->assertEqual($bc_entity->subject, 'old-value', 'Accessing entity property via BC decorator.');
+    // Test writing.
+    $bc_entity->subject = 'new';
+    $this->assertEqual($comment->subject->value, 'new', 'Updated entity property via BC decorator.');
+  }
 }
