2D top down projectile with joystick problem

Here is the following code for my top-down 2D shooter. The idea is that when the right joystick on the controller is held down in any direction, a projectile is fired in that direction. The code works as it should, but the speed of the projectile will vary depending on how hard the joystick is held in any direction.

	void Update () {
		
		if (Mathf.Abs (Input.GetAxis("FireVertical") + Input.GetAxis("FireHorizontal")) > .0){
			StartCoroutine (Fire ());	
		}
		
	}
	
	IEnumerator Fire()
	{
		if(!shooting)
		{
			shooting = true;


			GameObject projectile = Instantiate(ShootObj, ShootOutOf.position, ShootOutOf.rotation) as GameObject;


//Here is the math for the velocity of the projectile being fired in the direction of the joystick.  I am not sure how to fix it so that the direction is kept but speed remains constant.

			projectile.rigidbody2D.velocity = new Vector2(Input.GetAxis("FireHorizontal") * speed, Input.GetAxis("FireVertical") * -1f * speed);




			Destroy(projectile.gameObject, 1.0f);
			yield return new WaitForSeconds (rateOfFire);
			shooting = false;
	
		}
	}

Thanks in advance

Try:

projectile.rigidbody2D.velocity = new Vector2(Input.GetAxis("FireHorizontal"), Input.GetAxis("FireVertical") * -1f).normalized * speed;

When it is .normalized it will always have the magnitude of 1 but in the correct direction.