Index: wp-includes/query.php
===================================================================
--- wp-includes/query.php	(revision 17243)
+++ wp-includes/query.php	(working copy)
@@ -1684,8 +1684,10 @@
 				$cat = abs($cat);
 				if ( $in ) {
 					$q['category__in'][] = $cat;
+					$q['category__in'] = array_merge( $q['category__in'], get_term_children($cat, 'category') );
 				} else {
 					$q['category__not_in'][] = $cat;
+					$q['category__not_in'] = array_merge( $q['category__not_in'], get_term_children($cat, 'category') );
 				}
 			}
 			$q['cat'] = implode(',', $req_cats);
@@ -1696,7 +1698,8 @@
 			$tax_query[] = array(
 				'taxonomy' => 'category',
 				'terms' => $q['category__in'],
-				'field' => 'term_id'
+				'field' => 'term_id',
+				'include_children' => false
 			);
 		}
 
@@ -1706,6 +1709,7 @@
 				'taxonomy' => 'category',
 				'terms' => $q['category__not_in'],
 				'operator' => 'NOT IN',
+				'include_children' => false
 			);
 		}
 
