Object drag not moving at the same rate as the pointer

I’m trying to implement a drag and drop system but I’m having a problem with the drag rate at the moment. Currently when I drag an object it only moves a tiny fraction of the amount that my pointer actually moves. How do I fix this?

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.EventSystems;
using System.Collections.Generic;

public class DragHandling : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler, IPointerClickHandler
{
	public float partScale;

	[HideInInspector] public Transform placeholderParent = null;
	[HideInInspector] public Transform parentToReturnTo = null;
	[HideInInspector] public GameObject trashCan; 
	[HideInInspector] public GameObject partsPanel;
	[HideInInspector] public GameObject partsWindow;
	[HideInInspector] public GameObject buildBoard;
	[HideInInspector] public int orderIndex;

	GameObject placeholder = null;
	GameObject dragLayer;
	Vector3 buildPanelScale;
	Vector3 partsPanelScale = new Vector3(1.0f, 1.0f, 1.0f);
	Vector3 startPosition;

	private Vector3 offset = Vector3.zero;

	void Start ()
	{
		dragLayer = GameObject.FindGameObjectWithTag("DragLayer");
		buildBoard = GameObject.FindGameObjectWithTag("Board");
		partsPanel = GameObject.FindGameObjectWithTag("Parts");
		partsWindow = GameObject.FindGameObjectWithTag("PartsWindow");
		trashCan = GameObject.FindGameObjectWithTag("Trash");
	}

	#region IPointerClickHandler implementation

	public void OnPointerClick (PointerEventData eventData)
	{
		if(transform.parent.gameObject == buildBoard)
			transform.SetAsLastSibling();
	}

	#endregion

	#region IBeginDragHandler implementation

	public void OnBeginDrag (PointerEventData eventData)
	{
		Vector3 worldPos = Camera.main.ScreenToWorldPoint(eventData.position);
		worldPos.z = transform.position.z;
		offset = worldPos - transform.position;

		// startPosition = transform.position;

		// create placeholder gap and hold correct position in layout
		orderIndex = transform.GetSiblingIndex();

		placeholder = new GameObject();
		placeholder.transform.SetParent(transform.parent);
		placeholder.transform.SetSiblingIndex(transform.GetSiblingIndex());
		parentToReturnTo = transform.parent;									// store original parent location
		placeholderParent = parentToReturnTo;									// set placeholder gameobject transform
		GetComponent<CanvasGroup>().blocksRaycasts = false;						// turn off image raycasting when dragging image in order to see what's behind the image			
	}

	#endregion

	#region IDragHandler implementation
	
	public void OnDrag (PointerEventData eventData)
	{
		Vector3 worldPos = Camera.main.ScreenToWorldPoint(eventData.position);
		worldPos.z = transform.position.z;
		worldPos = worldPos - offset;
		transform.position = worldPos;

		// Vector3 mousePosition = new Vector3(eventData.position.x, eventData.position.y, 0);
		// transform.position = Input.mousePosition;											// set object coordinates to mouse coordinates

		if(transform.parent.gameObject == partsPanel)
			transform.SetParent(dragLayer.transform);										// pop object to draglayer to move object out of parts Panel
		if(transform.parent.gameObject == buildBoard)
			transform.SetParent(dragLayer.transform);
	}
	
	#endregion

	#region IEndDragHandler implementation

	public void OnEndDrag (PointerEventData eventData)
	{
		offset = Vector3.zero;

		transform.SetParent(parentToReturnTo);									// Snaps object back to orginal parent if dropped outside of a dropzone
		transform.SetSiblingIndex(placeholder.transform.GetSiblingIndex());		// Returns card back to placeholder location
		GetComponent<CanvasGroup>().blocksRaycasts = true;						// turn Raycast back on
		Destroy(placeholder);													// kill the placeholder if object hits a drop zone or returns to parts panel

		if(transform.parent.gameObject == buildBoard)
		{
			buildPanelScale = new Vector3(partScale, partScale, partScale);
			transform.localScale = buildPanelScale;
			transform.SetAsLastSibling();										// always place last piece on top
		}
		if(transform.parent.gameObject == partsPanel)
			transform.localScale = partsPanelScale;
			transform.SetSiblingIndex(orderIndex);
	}

	#endregion

}

Maybe you can try change your Projection to Orthographic in your main camera.