             if gestureRecognizer.state == UIGestureRecognizerState.Changed {
                 
                 var imageViewFrame = bundle.representationImageView.frame
-                imageViewFrame.origin = CGPointMake(pointInCollectionView.x - bundle.offset.x, pointInCollectionView.y - bundle.offset.y)
+                imageViewFrame.origin = CGPointMake(dragPointOnCanvas.x - bundle.offset.x, dragPointOnCanvas.y - bundle.offset.y)
                 bundle.representationImageView.frame = imageViewFrame
                 
+                let dragPointOnCollectionView = gestureRecognizer.locationInView(self.collectionView)
                 
-                if let indexPath : NSIndexPath = bundle.sourceCollectionView.indexPathForItemAtPoint(pointInCollectionView) {
+                if let indexPath : NSIndexPath = self.collectionView?.indexPathForItemAtPoint(dragPointOnCollectionView) {
                     
                     //self.checkForDraggingAtTheEdgeAndAnimatePaging(df, gestureRecognizer: gestureRecognizer)
                     

                bundle.representationImageView.removeFromSuperview()
                
                if let delegate = self.collectionView!.delegate as? KDRearrangeableCollectionViewDelegate { // if we have a proper data source then we can reload and have the data displayed correctly
                    bundle.sourceCollectionView.reloadData()
                }
                
                self.bundle = nil

                            delegate.moveDataItem(bundle.currentIndexPath, toIndexPath: indexPath)
                        }
                        
                        self.collectionView!.moveItemAtIndexPath(bundle.currentIndexPath, toIndexPath: indexPath)
                        
                        self.bundle!.currentIndexPath = indexPath
                        
                    }
                    
                }
                
