Problem moving a Rect

I have this simple code to move a Rect.
My problem is that when I click/touch screen the Rect moves faster.

void OnGUI ()
{
	if(i<=slideVel)
	{
		i++;
		GUI.DrawTexture (new Rect ((-Screen.width/slideVel)*i, 0, Screen.width*2, Screen.height), texture);

	}
	else
	{
		     	GUI.DrawTexture (new Rect (-Screen.width, 0, Screen.width*2, Screen.height), texture);

	}

}

I try to move this rect based on time but the problem is the same.

Somebody can help me?

This is to be expected, you have a value and each round you are multiplying it by a greater value, the result is not constant.

Let’s try and clean up a little:

Rect rect;
bool movement = false;
public float speed = 2f;
void Start()
{
    // rect is calcuated only once
    // your game won't make a significant jump but why not
    rect = new Rect ((-Screen.width/slideVel), 0, Screen.width*2, Screen.height);
}
void Update()
{
    // When pressing space rect will start moving
    if(Input.GetKeyDown(KeyCode.Space))movement = true;
}
void OnGUI ()
{
    if(movement){
       if(rect.x < xPos) // This could also be replaced with a Mathf.Clamp
            rect.x += speed * Time.deltaTime;
    }
    GUI.DrawTexture (rect, 0, Screen.width*2, Screen.height), texture);
}

I would guess that should do it.