How to make Canvas appear after GUI texture? Unity 4.7

Hi, I am making a FPS android sniper game.

I have some GUI elements on my screen and I have a feature for the user to zoom with the sniper rifle in game.

When pressing the zoom button, I use GUI.DrawTexture to make a 2D Texture scope on my camera screen, and when I do this all GUI Buttons and Labels are visible.

I have a canvas that contains two images, one inside another, which are used to make a movement joystick since this game is for android.

Now, the problem is that when the 2D scope texture is drawn, the joystick is not visible in the same way as the GUI elements, it is still kinda visible because the 2D scope texture is transparent, but it is very dark.

I want it to appear like the other GUI elements above the 2D scope texture. Any ideas on how to do this?

The code for drawing the 2D texture using GUI.DrawTexture:

void OnGUI()
     {
         if (!Active)
             return;
         
         if (NormalCamera.camera.enabled) {
             if (!Zooming) {
                 if (CrosshairImg) {
                     GUI.color = new Color (1, 1, 1, 0.8f);
                     GUI.DrawTexture (new Rect ((Screen.width * 0.5f) - (CrosshairImg.width * 0.5f), (Screen.height * 0.5f) - (CrosshairImg.height * 0.5f), CrosshairImg.width, CrosshairImg.height), CrosshairImg);
                     GUI.color = Color.white;
                 }
             } else {
                 scale.x = Screen.width/originalWidth; // calculate hor scale
                 scale.y = Screen.height/originalHeight; // calculate vert scale
                 scale.z = 1.0f;
                 var svMat= GUI.matrix; 
                 GUI.matrix = Matrix4x4.TRS (Vector3.zero, Quaternion.identity,scale);
                 if (CrosshairZoom) {
                     float scopeSize = (Screen.height * 1.1f);
                     GUI.DrawTexture (new Rect(0,0, originalWidth, originalHeight) , CrosshairZoom);
                 }
                 GUI.matrix = svMat;
             }
         }
     
     }

Here is how the game looks like without zooming, the orange joystick is in the down-left corner.

And here is how it looks like when the user zooms with the sniper rifle, the joystick is still there but barely visible.

You shouldn’t use the legacy GUI inside your game. Its also easier to just make the crosshair a UI sprite and just toggle it.