diff --git a/user_reference/user_reference.module b/user_reference/user_reference.module
index ca2bbfe..a8d606d 100644
--- a/user_reference/user_reference.module
+++ b/user_reference/user_reference.module
@@ -535,40 +535,6 @@ function user_reference_field_formatter_view($entity_type, $entity, $field, $ins
 }
 
 /**
- * Helper function for widgets and formatters.
- *
- * Store user names collected in the curent request.
- */
-function _user_reference_get_user_names($uids, $known_titles = array()) {
-  $titles = &drupal_static(__FUNCTION__, array());
-
-  // Save titles we receive.
-  $titles += $known_titles;
-
-  // Collect nids to retrieve from database.
-  $uids_query = array();
-  foreach ($uids as $uid) {
-    if (!isset($titles[$uid])) {
-      $uids_query[] = $uid;
-    }
-  }
-  if ($uids_query) {
-    $query = db_select('users', 'u')
-      ->fields('u', array('uid', 'name'))
-      ->condition('u.uid', $uids);
-    $titles += $query->execute()->fetchAllKeyed();
-  }
-
-  // Build the results array.
-  $return = array();
-  foreach ($uids as $uid) {
-    $return[$uid] = isset($titles[$uid]) ? $titles[$uid] : '';
-  }
-
-  return $return;
-}
-
-/**
  * Implements hook_field_widget_info().
  */
 function user_reference_field_widget_info() {
@@ -655,16 +621,11 @@ function user_reference_autocomplete_value($element, $input = FALSE, $form_state
     // "user name [uid:n]".
     $uid = $element['#default_value'];
     if (!empty($uid)) {
-      $q = db_select('users', 'u');
-      $q->addField('u', 'name');
-
-      $q->condition('u.uid', $uid)
-        ->range(0, 1);
-      $result = $q->execute();
-      // @todo If no result (user doesn't exist).
-      $value = $result->fetchField();
-      $value .= ' [uid:' . $uid . ']';
-      return $value;
+      $label = '';
+      if ($user = user_load($uid)) {
+        $label = entity_label('user', $user);
+      }
+      return "$label [uid:$uid]";
     }
   }
 }
@@ -681,17 +642,10 @@ function user_reference_autocomplete_validate($element, &$form_state, $form) {
 
   if (!empty($value)) {
     // Check whether we have an explicit "[uid:n]" input.
-    preg_match('/^(?:\s*|(.*) )?\[\s*uid\s*:\s*(\d+)\s*\]$/', $value, $matches);
-    if (!empty($matches)) {
-      // Explicit uid. Check that the 'name' part matches the actual name for
-      // the uid.
-      list(, $name, $uid) = $matches;
-      if (!empty($name)) {
-        $names = _user_reference_get_user_names(array($uid));
-        if ($name != $names[$uid]) {
-          form_error($element, t('%name: name mismatch. Please check your selection.', array('%name' => $instance['label'])));
-        }
-      }
+    $matches = array();
+    preg_match('/^(?:\s*|.* )?\[\s*uid\s*:\s*(\d+)\s*\]$/', $value, $matches);
+    if ($matches) {
+      $uid = $matches[1];
     }
     else {
       // No explicit uid (the submitted value was not populated by autocomplete
@@ -832,7 +786,8 @@ function user_reference_potential_references($field, $options = array()) {
  */
 function _user_reference_potential_references_views($field, $options) {
   $settings = $field['settings']['view'];
-  $options['title_field'] = 'name';
+  $realname = module_exists('realname');
+  $options['title_field'] = ($realname) ? 'realname' : 'name';
   return references_potential_references_view('user', $settings['view_name'], $settings['display_name'], $settings['args'], $options);
 }
 
@@ -849,6 +804,8 @@ function _user_reference_potential_references_standard($field, $options) {
     return array();
   }
 
+  $realname = module_exists('realname');
+
   $query = db_select('users', 'u')
     // Select the whole record, so that format_username() has enough
     // information.
@@ -868,19 +825,25 @@ function _user_reference_potential_references_standard($field, $options) {
     $query->condition('r.rid', array_keys($filter_roles), 'IN');
   }
 
+  if ($realname) {
+    $query->leftJoin('realname', 'rn', 'u.uid = rn.uid');
+  }
+
   if ($options['string'] !== '') {
+    $name = ($realname) ? 'rn.realname' : 'u.name';
+
     switch ($options['match']) {
       case 'contains':
-        $query->condition('u.name', '%' . $options['string'] . '%', 'LIKE');
+        $query->condition($name, '%' . $options['string'] . '%', 'LIKE');
         break;
 
       case 'starts_with':
-        $query->condition('u.name', $options['string'] . '%', 'LIKE');
+        $query->condition($name, $options['string'] . '%', 'LIKE');
         break;
 
       case 'equals':
       default: // no match type or incorrect match type: use "="
-        $query->condition('u.name', $options['string'], '=');
+        $query->condition($name, $options['string'], '=');
         break;
     }
   }
@@ -895,14 +858,16 @@ function _user_reference_potential_references_standard($field, $options) {
   if ($options['limit']) {
     $query->range(0, $options['limit']);
   }
-  $query->orderBy('u.name');
 
-  $result = $query->execute()->fetchAll();
+  $uids = $query->execute()->fetchCol();
+  $accounts = user_load_multiple($uids);
+
   $references = array();
-  foreach ($result as $account) {
+  foreach ($accounts as $account) {
+    $label = entity_label('user', $account);
     $references[$account->uid] = array(
-      'title'    => $account->name,
-      'rendered' => check_plain(format_username($account)),
+      'title'    => $label,
+      'rendered' => check_plain($label),
     );
   }
   return $references;
diff --git a/views/references_plugin_display.inc b/views/references_plugin_display.inc
index 9ba3c8e..bb636b7 100644
--- a/views/references_plugin_display.inc
+++ b/views/references_plugin_display.inc
@@ -53,6 +53,7 @@ class references_plugin_display extends views_plugin_display {
       return;
     }
 
+
     // Make sure the id field is included in the results, and save its alias
     // so that references_plugin_style can retrieve it.
     $this->id_field_alias = $this->view->query->add_field($this->view->base_table, $this->view->base_field);
@@ -78,6 +79,9 @@ class references_plugin_display extends views_plugin_display {
       }
 
       $table_alias = $this->view->query->ensure_table($this->view->base_table);
+      if ($table_alias == 'users' && module_exists('realname')) {
+        $table_alias = 'realname';
+      } 
       $this->view->query->add_where(NULL, $table_alias . '.' . $options['title_field'], $value, $operator);
     }
     elseif ($options['ids']) {
