diff --git a/node_reference/node_reference.module b/node_reference/node_reference.module
index c14d190..d6c1518 100644
--- a/node_reference/node_reference.module
+++ b/node_reference/node_reference.module
@@ -644,16 +644,11 @@ function node_reference_autocomplete_value($element, $input = FALSE, $form_state
     // "node title [nid:n]".
     $nid = $element['#default_value'];
     if (!empty($nid)) {
-      $q = db_select('node', 'n');
-      $node_title_alias = $q->addField('n', 'title');
-      $q->addTag('node_access')
-        ->condition('n.nid', $nid)
-        ->range(0, 1);
-      $result = $q->execute();
-      // @todo If no result (node doesn't exist or no access).
-      $value = $result->fetchField();
-      $value .= ' [nid:' . $nid . ']';
-      return $value;
+      $label = '';
+      if (($node = node_load($nid)) && node_access('view', $node)) {
+        $label = entity_label('node', $node);
+      }
+      return "$label [nid:$nid]";
     }
   }
 }
@@ -670,21 +665,10 @@ function node_reference_autocomplete_validate($element, &$form_state, $form) {
 
   if (!empty($value)) {
     // Check whether we have an explicit "[nid:n]" input.
-    preg_match('/^(?:\s*|(.*) )?\[\s*nid\s*:\s*(\d+)\s*\]$/', $value, $matches);
-    if (!empty($matches)) {
-      // Explicit nid. Check that the 'title' part matches the actual title for
-      // the nid.
-      list(, $title, $nid) = $matches;
-      if (!empty($title)) {
-        $real_title = db_select('node', 'n')
-          ->fields('n', array('title'))
-          ->condition('n.nid', $nid)
-          ->execute()
-          ->fetchField();
-        if (trim($title) != trim($real_title)) {
-          form_error($element, t('%name: title mismatch. Please check your selection.', array('%name' => $instance['label'])));
-        }
-      }
+    $matches = array();
+    preg_match('/^(?:\s*|.* )?\[\s*nid\s*:\s*(\d+)\s*\]$/', $value, $matches);
+    if ($matches) {
+      $nid = $matches[1];
     }
     else {
       // No explicit nid (the submitted value was not populated by autocomplete
@@ -842,12 +826,12 @@ function _node_reference_potential_references_standard($field, $options) {
     return array();
   }
 
-  $query = db_select('node', 'n');
-  $node_nid_alias   = $query->addField('n', 'nid');
-  $node_title_alias = $query->addField('n', 'title', 'node_title');
-  $node_type_alias  = $query->addField('n', 'type',  'node_type');
-  $query->addTag('node_access');
-  $query->addMetaData('id', ' _node_reference_potential_references_standard');
+  $query = db_select('node', 'n')
+    ->fields('n', array('nid', 'title', 'type'))
+    ->orderBy('n.title')
+    ->orderBy('n.type')
+    ->addTag('node_access')
+    ->addMetaData('id', ' _node_reference_potential_references_standard');
 
   if (is_array($field['settings']['referenceable_types'])) {
     $query->condition('n.type', $field['settings']['referenceable_types'], 'IN');
@@ -878,16 +862,15 @@ function _node_reference_potential_references_standard($field, $options) {
     $query->range(0, $options['limit']);
   }
 
-  $query
-    ->orderBy($node_title_alias)
-    ->orderBy($node_type_alias);
+  $nids = $query->execute()->fetchCol();
+  $nodes = node_load_multiple($nids);
 
-  $result = $query->execute()->fetchAll();
   $references = array();
-  foreach ($result as $node) {
+  foreach ($nodes as $node) {
+    $label = entity_label('node', $node);
     $references[$node->nid] = array(
-      'title'    => $node->node_title,
-      'rendered' => check_plain($node->node_title),
+      'title'    => $label,
+      'rendered' => check_plain($label),
     );
   }
   return $references;
diff --git a/user_reference/user_reference.module b/user_reference/user_reference.module
index 2787509..6756836 100644
--- a/user_reference/user_reference.module
+++ b/user_reference/user_reference.module
@@ -556,40 +556,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() {
@@ -676,16 +642,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]";
     }
   }
 }
@@ -702,17 +663,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
@@ -868,10 +822,9 @@ function _user_reference_potential_references_standard($field, $options) {
   }
 
   $query = db_select('users', 'u')
-    ->addMetaData('id', ' _user_reference_potential_references_standard')
-    // Select the whole record, so that format_username() has enough
-    // information.
-    ->fields('u');
+    ->fields('u', array('uid'))
+    ->orderBy('u.name')
+    ->addMetaData('id', ' _user_reference_potential_references_standard');
 
   // Enable this filter only if any statuses checked (and not both).
   if (count($filter_status) == 1) {
@@ -911,14 +864,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;
