             offsetX = scrollRect.x;
             offsetY = scrollRect.y;
         }
+		
+		var perspectiveProjection:PerspectiveProjection = dataGroup.transform.perspectiveProjection;
         
         // Construct an image by adding clones of the visible item renderers
+		var elementsIn3D:Boolean = false;
         var count:int = selection.length;
         for (var i:int = 0; i < count; i++)
         {

        // The lis tis the IItemRendererOwner for this renderer.
        // It will update the renderer owner.
        list.updateRenderer(newRenderer);
        
        // setup the dimensions of the newRenderer
        newRenderer.width = renderer.width;
        newRenderer.height = renderer.height;
        
        // FIXME (egeorgie): Copy the appropriate matrix depending on 2D/3D
        //newRenderer.setLayoutMatrix3D(renderer.getLayoutMatrix3D(), false);
        newRenderer.setLayoutMatrix(renderer.getLayoutMatrix(), false);
        
        // FIXME (egeorgie): Copy the depth property
        return newRenderer;
    }
}

            if (!element || !(element is IItemRenderer))
                continue;
            
			if (element.is3D)
				elementsIn3D = true;
			
            // Check visibility of the ItemRenderer. It's not guaranteed that the
            // dataGroup returns null for ItemRenderers outside the viewport
			if (scrollRect)
			{
				var elementBounds:Rectangle;
				if (element.hasLayoutMatrix3D)
				{
					// Bounds in child coordinates
					elementBounds = new Rectangle(0, 0,
												  element.getLayoutBoundsWidth(false), 
												  element.getLayoutBoundsHeight(false));

					// Bounds transformed in 3D and projected to parent
					elementBounds = MatrixUtil.projectBounds(elementBounds, 
															 element.getLayoutMatrix3D(), 
															 perspectiveProjection);
				}
				else
					elementBounds = getElementBounds(element);

				if (!scrollRect.containsRect(elementBounds) && !scrollRect.intersects(elementBounds))
					continue;
			}

            var clone:IItemRenderer = cloneItemRenderer(IItemRenderer(element), list);

			// Copy the dimensions
			clone.width = element.width;
			clone.height = element.height;

			// Copy the transform
			if (element.hasLayoutMatrix3D)
				clone.setLayoutMatrix3D(element.getLayoutMatrix3D(), false);
			else
				clone.setLayoutMatrix(element.getLayoutMatrix(), false);
			clone.x -= offsetX;
			clone.y -= offsetY;

			// Copy other relevant properties
			clone.depth = element.depth;
			clone.visible = element.visible;
			if (element.postLayoutTransformOffsets)
				clone.postLayoutTransformOffsets = element.postLayoutTransformOffsets;
			
			// Put it in a dragging state
			clone.dragging = true;

            // Add the clone as a child
            addElement(clone);
        }

        // Copy projection matrix, if there was an element in 3d.
		if (elementsIn3D)
			this.transform.perspectiveProjection = perspectiveProjection;
    }
    
    //--------------------------------------------------------------------------
