 			queryBounds.setMinPoint(localMinPoint);
 			queryBounds.setMaxPoint(localMaxPoint);
 			
-			if (sameDirection)
-			{
+			if (zooming)
+			{
+				// swap min,max coordinates if necessary
 				if (queryBounds.getXDirection() != tempDataBounds.getXDirection())
 					queryBounds.setXRange(queryBounds.getXMax(), queryBounds.getXMin());
 				if (queryBounds.getYDirection() != tempDataBounds.getYDirection())
 					queryBounds.setYRange(queryBounds.getYMax(), queryBounds.getYMin());
+				
+				// expand rectangle if necessary to match screen aspect ratio
+				var xScale:Number = queryBounds.getXCoverage() / tempScreenBounds.getXCoverage();
+				var yScale:Number = queryBounds.getYCoverage() / tempScreenBounds.getYCoverage();
+				if (xScale > yScale)
+					queryBounds.setHeight( queryBounds.getYDirection() * tempScreenBounds.getYCoverage() * xScale );
+				if (yScale > xScale)
+					queryBounds.setWidth( queryBounds.getXDirection() * tempScreenBounds.getXCoverage() * yScale );
 			}
 		}
 		


				// when using the selection layer, clear the probe
				setProbeKeys(layer, []);
				projectDragBoundsToDataQueryBounds(layer, true);
				
				
				// calculate minImportance

		/**
		 * This function projects drag start,stop screen coordinates into data coordinates and stores the result in queryBounds.
		 * @param layer If layer is null, InteractiveVisualization's screen/data bounds will be used.  Otherwise, uses IPlotLayer's bounds.
		 * @param zooming Specify true when computing zoom coordinates.
		 */		
		protected function projectDragBoundsToDataQueryBounds(layer:IPlotLayer, zooming:Boolean):void
		{
			if (layer)
			{
