diff --git node_reference/node_reference.module node_reference/node_reference.module
index 12723fe..5ffa148 100644
--- node_reference/node_reference.module
+++ node_reference/node_reference.module
@@ -544,6 +544,30 @@ function node_reference_field_widget_error($element, $error, $form, &$form_state
 }
 
 /**
+ * Builds a list of referenceable nodes suitable for the '#option' FAPI property.
+ *
+ * Warning: the function does NOT take care of encoding or espcaping the node
+ * titles. Proper massaging needs to be performed by the caller, according to
+ * the destination FAPI '#type' (radios / checkboxes / select).
+ *
+ * @param $field
+ *   The field definition.
+ *
+ * @return
+ *   An array of referenceable node titles, keyed by node id.
+ */
+function _node_reference_options($field) {
+  $references = _node_reference_potential_references($field);
+
+  $options = array();
+  foreach ($references as $key => $value) {
+    $options[$key] = $value['title'];
+  }
+
+  return $options;
+}
+
+/**
  * Fetch an array of all candidate referenced nodes.
  *
  * This info is used in various places (allowed values, autocomplete
@@ -764,15 +788,7 @@ function node_reference_field_prepare_translation($entity_type, $entity, $field,
  * Implements hook_options_list().
  */
 function node_reference_options_list($field) {
-  $references = _node_reference_potential_references($field);
-
-  // @todo Support optgroups ? I think this was added in late CCK D6.
-  $options = array();
-  foreach ($references as $key => $value) {
-    $options[$key] = $value['title'];
-  }
-
-  return $options;
+  return _node_reference_options($field);
 }
 
 /**
@@ -849,20 +865,39 @@ function node_reference_field_views_data($field) {
   $data = field_views_field_default_views_data($field);
 
   $storage = $field['storage']['details']['sql'];
-
   foreach ($storage as $age => $table_data) {
     $table = key($table_data);
     $columns = current($table_data);
     $id_column = $columns['nid'];
     if (isset($data[$table])) {
+      // Add a relationship.
       $data[$table][$id_column]['relationship'] = array(
         'base' => 'node',
         'field' => 'nid',
         'base field' => 'nid',
         'label' => $field['field_name'],
       );
+      // Filter: swap the handler to the 'in' operator. The callback receives
+      // the field name instead of the whole $field structure to keep views
+      // data to a reasonable size.
+      $data[$table][$id_column]['filter']['handler'] = 'views_handler_filter_in_operator';
+      $data[$table][$id_column]['filter']['options callback'] = 'node_reference_views_options';
+      $data[$table][$id_column]['filter']['options arguments'] = array($field['field_name']);
     }
   }
 
   return $data;
 }
+
+/**
+ * Helper callback for the views_handler_filter_in_operator filter.
+ *
+ * @param $field_name
+ *   The field name.
+ */
+function node_reference_views_options($field_name) {
+  if ($field = field_info_field($field_name)) {
+    return _node_reference_options($field);
+  }
+  return array();
+}
diff --git user_reference/user_reference.module user_reference/user_reference.module
index 9c09a25..c84f84b 100644
--- user_reference/user_reference.module
+++ user_reference/user_reference.module
@@ -381,6 +381,30 @@ function user_reference_field_widget_error($element, $error, $form, &$form_state
 }
 
 /**
+ * Builds a list of referenceable users suitable for the '#option' FAPI property.
+ *
+ * Warning: the function does NOT take care of encoding or espcaping the user
+ * names. Proper massaging needs to be performed by the caller, according to
+ * the destination FAPI '#type' (radios / checkboxes / select).
+ *
+ * @param $field
+ *   The field definition.
+ *
+ * @return
+ *   An array of referenceable user names, keyed by user id.
+ */
+function _user_reference_options($field) {
+  $references = _user_reference_potential_references($field);
+
+  $options = array();
+  foreach ($references as $key => $value) {
+    $options[$key] = $value['title'];
+  }
+
+  return $options;
+}
+
+/**
  * Fetch an array of all candidate referenced users.
  *
  * This info is used in various places (aloowed values, autocomplete results,
@@ -520,15 +544,7 @@ function user_reference_autocomplete($field_name, $string = '') {
  * Implements hook_options_list().
  */
 function user_reference_options_list($field) {
-  $references = _user_reference_potential_references($field);
-
-  // @todo Support optgroups ? I think this was added in late CCK D6.
-  $options = array();
-  foreach ($references as $key => $value) {
-    $options[$key] = $value['title'];
-  }
-
-  return $options;
+  return _user_reference_options($field);
 }
 
 /**
@@ -691,14 +707,37 @@ function user_reference_field_views_data($field) {
     $columns = current($table_data);
     $id_column = $columns['uid'];
     if (isset($data[$table])) {
+      // Add a relationship.
       $data[$table][$id_column]['relationship'] = array(
         'base' => 'users',
         'field' => 'uid',
         'base field' => 'uid',
         'label' => $field['field_name'],
       );
+      // Filter: swap the handler to the 'in' operator. The callback receives
+      // the field name instead of the whole $field structure to keep views
+      // data to a reasonable size.
+      $data[$table][$id_column]['filter']['handler'] = 'views_handler_filter_in_operator';
+      $data[$table][$id_column]['filter']['options callback'] = 'user_reference_views_filter_options';
+      $data[$table][$id_column]['filter']['options arguments'] = array($field['field_name']);
     }
   }
 
   return $data;
 }
+
+/**
+ * Helper callback for the views_handler_filter_in_operator filter.
+ *
+ * @param $field_name
+ *   The field name.
+ *
+ * @return
+ *   The array of allowed options for the filter.
+ */
+function user_reference_views_filter_options($field_name) {
+  if ($field = field_info_field($field_name)) {
+    return _user_reference_options($field);
+  }
+  return array();
+}
