diff --git a/entityreference.module b/entityreference.module
index 5f03c5b..a171660 100644
--- a/entityreference.module
+++ b/entityreference.module
@@ -676,6 +676,10 @@ function entityreference_field_property_callback(&$info, $entity_type, $field, $
   foreach (entityreference_get_behavior_handlers($field, $instance) as $handler) {
     $handler->property_info_alter($info, $entity_type, $field, $instance, $field_type);
   }
+
+  // Invoke the selection handler to allow it to change the properties.
+  $selection_handler = entityreference_get_selection_handler($field, $instance, $entity_type);
+  $selection_handler->property_info_alter($info, $entity_type, $field, $instance, $field_type);
 }
 
 /**
diff --git a/plugins/selection/EntityReference_SelectionHandler_Generic.class.php b/plugins/selection/EntityReference_SelectionHandler_Generic.class.php
index 2d1c5d7..7ee2007 100644
--- a/plugins/selection/EntityReference_SelectionHandler_Generic.class.php
+++ b/plugins/selection/EntityReference_SelectionHandler_Generic.class.php
@@ -153,6 +153,15 @@ class EntityReference_SelectionHandler_Generic implements EntityReference_Select
   }
 
   /**
+   * Implements EntityReferenceHandler::property_info_alter().
+   */
+  public function property_info_alter(&$info, $entity_type, $field, $instance, $field_type) {
+    // Set Entity API's callback. This invokes hook_options_list(), which then
+    // leads back to this handler's getReferencableEntities().
+    $info[$entity_type]['bundles'][$instance['bundle']]['properties'][$field['field_name']]['options list'] = 'entity_metadata_field_options_list';
+  }
+
+  /**
    * Implements EntityReferenceHandler::getReferencableEntities().
    */
   public function getReferencableEntities($match = NULL, $match_operator = 'CONTAINS', $limit = 0) {
diff --git a/plugins/selection/EntityReference_SelectionHandler_Views.class.php b/plugins/selection/EntityReference_SelectionHandler_Views.class.php
index 1b036a7..736b543 100644
--- a/plugins/selection/EntityReference_SelectionHandler_Views.class.php
+++ b/plugins/selection/EntityReference_SelectionHandler_Views.class.php
@@ -100,6 +100,13 @@ class EntityReference_SelectionHandler_Views implements EntityReference_Selectio
   }
 
   /**
+   * Implements EntityReferenceHandler::property_info_alter().
+   */
+  public function property_info_alter(&$info, $entity_type, $field, $instance, $field_type) {
+    // We can't do anything useful here.
+  }
+
+  /**
    * Implements EntityReferenceHandler::getReferencableEntities().
    */
   public function getReferencableEntities($match = NULL, $match_operator = 'CONTAINS', $limit = 0) {
diff --git a/plugins/selection/abstract.inc b/plugins/selection/abstract.inc
index 1d2ea0d..bb16aac 100644
--- a/plugins/selection/abstract.inc
+++ b/plugins/selection/abstract.inc
@@ -18,6 +18,13 @@ interface EntityReference_SelectionHandler {
   public static function getInstance($field, $instance = NULL, $entity_type = NULL, $entity = NULL);
 
   /**
+   * Alter the properties information of a field instance.
+   *
+   * @see entity_hook_field_info()
+   */
+  public function property_info_alter(&$info, $entity_type, $field, $instance, $field_type);
+
+  /**
    * Return a list of referencable entities.
    *
    * @return
@@ -89,6 +96,8 @@ class EntityReference_SelectionHandler_Broken implements EntityReference_Selecti
     return $form;
   }
 
+  public function property_info_alter(&$info, $entity_type, $field, $instance, $field_type) {}
+
   public function getReferencableEntities($match = NULL, $match_operator = 'CONTAINS', $limit = 0) {
     return array();
   }
