diff --git a/flag.module b/flag.module
index ca06c2c..540943d 100644
--- a/flag.module
+++ b/flag.module
@@ -2083,16 +2083,17 @@ function flag_get_user_flags($entity_type, $entity_id = NULL, $uid = NULL, $sid
     if (!isset($flagged_content[$uid][$sid][$entity_type][$entity_id])) {
       $flag_names = _flag_get_flag_names();
       $flagged_content[$uid][$sid][$entity_type][$entity_id] = array();
-      $result = db_select('flagging', 'fc')
-        ->fields('fc')
-        ->condition('entity_type', $entity_type)
+      $query = db_select('flagging', 'fc');
+      $query->join('flag', 'f', 'f.fid = fc.fid');
+      $query->fields('fc')
+        ->condition('fc.entity_type', $entity_type)
         ->condition('entity_id', $entity_id)
         ->condition(db_or()
           ->condition('uid', $uid)
-          ->condition('uid', 0)
+          ->condition('global', 1)
         )
-        ->condition('sid', $sid)
-        ->execute();
+        ->condition('sid', $sid);
+      $result = $query->execute();
 
       foreach ($result as $flagging_data) {
         $flagged_content[$uid][$sid][$entity_type][$entity_id][$flag_names[$flagging_data->fid]] = $flagging_data;
@@ -2105,15 +2106,16 @@ function flag_get_user_flags($entity_type, $entity_id = NULL, $uid = NULL, $sid
     if (!isset($flagged_content[$uid][$sid][$entity_type]['all'])) {
       $flag_names = _flag_get_flag_names();
       $flagged_content[$uid][$sid][$entity_type]['all'] = array();
-      $result = db_select('flagging', 'fc')
-        ->fields('fc')
+      $query = db_select('flagging', 'fc');
+      $query->join('flag', 'f', 'f.fid = fc.fid');
+      $query->fields('fc')
         ->condition('entity_type', $entity_type)
         ->condition(db_or()
           ->condition('uid', $uid)
-          ->condition('uid', 0)
+          ->condition('global', 1)
         )
-        ->condition('sid', $sid)
-        ->execute();
+        ->condition('sid', $sid);
+      $result = $query->execute();
       foreach ($result as $flagging_data) {
         $flagged_content[$uid][$sid][$entity_type]['all'][$flag_names[$flagging_data->fid]][$flagging_data->entity_id] = $flagging_data;
       }
diff --git a/flag.rules.inc b/flag.rules.inc
index ba0b2c6..e4ce414 100644
--- a/flag.rules.inc
+++ b/flag.rules.inc
@@ -171,7 +171,7 @@ function flag_rules_action_info() {
     'flagging_user' => array(
       'type' => 'user',
       'label' => t('User on whose behalf to flag'),
-      'description' => t('For non-global flags, this is the user on whose behalf to flag the object. In addition, if checked below, the access permissions to the flag are checked against this user.'),
+      'description' => t('This is the user on whose behalf to flag the object. In addition, if checked below, the access permissions to the flag are checked against this user.'),
     ),
     'permission_check' => array(
       'type' => 'boolean',
@@ -192,7 +192,7 @@ function flag_rules_action_info() {
         'flagging_user' => array(
           'type' => 'user',
           'label' => t('User whose flag to trim'),
-          'description' => t('For non-global flags, this is the user whose flag to trim. (For global flags, this argument is ignored.)'),
+          'description' => t('This is the user whose flag to trim.'),
         ),
         'cutoff_size' => array(
           'type' => 'integer',
@@ -301,7 +301,7 @@ function flag_rules_action_info() {
           'flagging_user' => array(
             'type' => 'user',
             'label' => t('User who flagged the @label', array('@label' => $label)),
-            'description' => t('For non-global flags, this is the user who flagged the @label. (For global flags, this argument is ignored.)', array('@label' => $label)),
+            'description' => t('This is the user who flagged the @label.', array('@label' => $label)),
           ),
         ),
         'provides' => array(
@@ -554,7 +554,7 @@ function flag_rules_condition_info() {
           'flagging_user' => array(
             'type' => 'user',
             'label' => t('User on whose behalf to check'),
-            'description' => t('For non-global flags, this is the user on whose behalf the flag is checked.'),
+            'description' => t('This is the user on whose behalf the flag is checked.'),
           ),
         ),
         'group' => t('Flag'),
diff --git a/includes/flag/flag_flag.inc b/includes/flag/flag_flag.inc
index 44e7a7a..cd86661 100644
--- a/includes/flag/flag_flag.inc
+++ b/includes/flag/flag_flag.inc
@@ -720,8 +720,7 @@ class flag_flag {
       return FALSE;
     }
 
-    // Find out which user id to use.
-    $uid = $this->global ? 0 : $account->uid;
+    $uid = $account->uid;
 
     // Find out which session id to use.
     if ($this->global) {
@@ -976,14 +975,16 @@ class flag_flag {
    * @private
    */
   function _is_flagged($entity_id, $uid, $sid) {
-    return db_select('flagging', 'fc')
-      ->fields('fc', array('flagging_id'))
+    $query = db_select('flagging', 'fc');
+    $query->fields('fc', array('flagging_id'))
       ->condition('fid', $this->fid)
-      ->condition('uid', $uid)
       ->condition('sid', $sid)
-      ->condition('entity_id', $entity_id)
-      ->execute()
-      ->fetchField();
+      ->condition('entity_id', $entity_id);
+    // Only check uid for non-global flags.
+    if (!$this->global) $query->condition('uid', $uid);
+    $result = $query->execute();
+    $record = $result->fetchField();
+    return $record;
   }
 
   /**
