Render Transparent text OnPostRender

Hello all.
I want to draw a 2d texture on the screen, in front of anything else.I know that for this i will need to work with OnPostRender so i can draw after any other rendering has happened.
The idea is to draw something right after the player has won the level,so i check for a “won” boolean, and when it is true i fire off the function.
This is the “trigger part” :

if(won){
				GUI.Label(new Rect(0.3f*Screen.width,0.3f*Screen.height,0.4f*Screen.width,0.2f*Screen.height),"YOU WON!!!

You earned:",labels);

				if(flag)
				{Debug.LogError ("Won-flag");
				int tmp=Humancount();

				if(PlayerPrefs.HasKey("HumanCoins")==false)
				{
					PlayerPrefs.SetInt ("HumanCoins",tmp);
				}else
				{
					PlayerPrefs.SetInt("HumanCoins",PlayerPrefs.GetInt("HumanCoins")+tmp);
				}	
					Debug.LogError ("Rewarded");
				GameObject.FindGameObjectWithTag("MainCamera").SendMessage("setCount",tmp);
					Debug.LogError ("SendCount");
					GameObject.FindGameObjectWithTag("MainCamera").SendMessage("setActive",true);
					Debug.LogError ("Send Active");
					flag=false;
				}

There is a script attached to the mainCam and it looks like this:

using UnityEngine;
using System.Collections;

public class Reward : MonoBehaviour {
	public Mesh msh;
	public Texture tex;
	public bool active=false;
	public int count=0;
	public bool flag=true;




	void Start () 
	{
		msh=CreateMesh ();
	}

	void OnPostRender()
	{
		if (active)
		{
			Debug.LogError ("Active");
			StartCoroutine (DrawTexture());
				
				


			active=false;	    
		}



	}



	private Mesh CreateMesh() {
		Mesh mesh = new Mesh();
		Vector3[] vertices = new Vector3[]
		{
			new Vector3( 1, 1,  0),
			new Vector3( 1, -1, 0),
			new Vector3(-1, 1, 0),
			new Vector3(-1, -1, 0),
		};
		
		Vector2[] uv = new Vector2[]
		{
			new Vector2(1, 1),
			new Vector2(1, 0),
			new Vector2(0, 1),
			new Vector2(0, 0),
		};
		
		int[] triangles = new int[]
		{
			0, 1, 2,
			2, 1, 3,
		};
		
		mesh.vertices = vertices;
		mesh.uv = uv;
		mesh.triangles = triangles;
		mesh.RecalculateNormals();
		
		return mesh;
	}



	public IEnumerator DrawTexture() {  
		
		yield return new WaitForEndOfFrame ();


		GameObject alien = new GameObject(
			"Humanoid", 
			typeof(MeshRenderer), 
			typeof(MeshFilter)    
			);
		alien.GetComponent<MeshFilter>().mesh = msh;
		
		alien.renderer.material.mainTexture = tex;
		
		
		var shader = Shader.Find ("Transparent/Diffuse");
		alien.renderer.material.shader = shader;
	}

	public void setCount( int c)
	{
		count = c;
	}
	public void setActive(bool actv)
	{
		active = actv;
	}

}

Everything runs but the texture is still behind everything else on the screen,even tho i use both onpostrender and a yield to WaitForEndOfFrame, what am i doing wrong, or what am i missing?

Forgive my long post but it is better for anyone who would like to help to have everything here, rather than asking me and waiting for me to respond etc.
Thanks in advance

Okay seems that after all this i should also use Transparent/Cutout/Diffuse shader, found it randomly after trying out various shaders