diff --git a/flag.module b/flag.module
index bca0b47..45038df 100644
--- a/flag.module
+++ b/flag.module
@@ -2112,13 +2112,15 @@ 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');
+      $result = $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();
@@ -2134,15 +2136,18 @@ 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')
-        ->condition('entity_type', $entity_type)
+      $query = db_select('flagging', 'fc');
+      $query->join('flag', 'f', 'f.fid = fc.fid');
+      $result = $query->fields('fc')
+        ->condition('fc.entity_type', $entity_type)
         ->condition(db_or()
           ->condition('uid', $uid)
           ->condition('uid', 0)
+          ->condition('global', 1)
         )
         ->condition('sid', $sid)
         ->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 60abc45..e7ba38c 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',
@@ -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(
@@ -432,17 +432,15 @@ function flag_rules_action_fetch_entity_by_user($flag, $entity) {
     ->fields('fc', array('entity_id'))
     ->condition('entity_type', $flag->entity_type)
     ->condition('fid', $flag->fid);
-  // For global flags the user parameter is ignored, so we add the
-  // extra 'uid' condition when the flag is NOT global.
-  if (!$flag->global) {
-    $user = entity_metadata_wrapper('user', $entity);
-    $sid = $user->flag_sid->value();
-    $query = $query->condition('uid', $user->uid->value());
-    // Filter out any bad session ids and any users that aren't anonymous.
-    if (!empty($sid) && $sid != -1) {
-      $query->condition('sid', $sid);
-    }
+
+  $user = entity_metadata_wrapper('user', $entity);
+  $sid = $user->flag_sid->value();
+  $query = $query->condition('uid', $user->uid->value());
+  // Filter out any bad session ids and any users that aren't anonymous.
+  if (!empty($sid) && $sid != -1) {
+    $query->condition('sid', $sid);
   }
+
   $result = $query->execute();
   $flagged = $result->fetchCol();
   return array('content_flagged_by_user' => $flagged);
@@ -560,7 +558,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 7adc458..90a5224 100644
--- a/includes/flag/flag_flag.inc
+++ b/includes/flag/flag_flag.inc
@@ -727,7 +727,7 @@ class flag_flag {
     }
 
     // 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) {
@@ -1039,14 +1039,14 @@ 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);
+    if (!$this->global) $query->condition('uid', $uid);
+    return $query->execute()->fetchField();
   }
 
   /**
diff --git a/includes/views/flag_handler_relationships.inc b/includes/views/flag_handler_relationships.inc
index 0ee05fc..4e1f3cf 100644
--- a/includes/views/flag_handler_relationships.inc
+++ b/includes/views/flag_handler_relationships.inc
@@ -148,7 +148,7 @@ class flag_handler_relationship_content extends flag_handler_relationship {
       'value' => $flag->fid,
       'numeric' => TRUE,
     );
-    if ($this->options['user_scope'] == 'current' && !$flag->global) {
+    if ($this->options['user_scope'] == 'current') {
       $this->definition['extra'][] = array(
         'field' => 'uid',
         'value' => '***CURRENT_USER***',
