Positioning a instantiated object using Input.Mouseposition doesn't position right?

So, I’m trying to instantiate a object on mouse position, but the object is instantiated on a totally different position when launching the game.

Here’s my current code :

	void Update()
	{
		if (towerBools [0] == true) {
			if (Input.GetButtonDown ("Fire1")) {
				Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

				Instantiate(testTowerPrefab[0], Input.mousePosition, transform.rotation);
				Debug.Log ("Instantiated Tower1");

				towerBools[0] = false;

			}
		}
	}

	void OnGUI()
	{
		GUI.Box (new Rect (Screen.width - 300, 0, Screen.width / 4, Screen.height - 2), "", boxStyle);
		if (GUI.Button (new Rect (Screen.width - 300 / 2, 50, 50, 50), "Tow Pic", buttonStyle)) {
			towerBools[0] = true;
		}
	}

You forgot to do the actual ray-cast!