just started working with textures have bug

i want to build a function for a debuger i am working on,for this i want to make a grid 24*32 on the screen and show me in which square the mouse is at every point of time
i want to color red the square. in order to do it i created a plane with a material red.png i set the alpha to 0. next i want that when my mouse is on the square to set the alpha of the square to 1 and restore to 0 if i leave the square.

my questions
a) is there a better way to do it?
b) what i did ,didnt work can anyone help me figuring out why?

thanks in advance and sorry for the poor english

using UnityEngine;
using System.Collections;

public class Bitmap : MonoBehaviour {

public	int Columns=32,Rows=24;
public int MouseCol,MouseRow;
 bool[] IsSquareColored;

	Texture2D texture;
	// Use this for initialization
	void Start () {
	
	IsSquareColored= new bool[Columns*Rows];
		
	
	
		texture=(Texture2D) this.transform.gameObject.renderer.sharedMaterial.mainTexture;
	}
	
	// Update is called once per frame
	void Update () {

		
		Vector2 MousePos= Input.mousePosition;	
		MouseCol= (int)(MousePos.x * Columns / Screen.width);
	 MouseRow = (int)(MousePos.y *Rows /Screen.height);
	MouseCol=	Mathf.Clamp(MouseCol,0,Columns);
	MouseRow=	Mathf.Clamp(MouseRow,0,Rows);
		
	// Paint red
		
	for (int i=0;i<Rows;i++)
		{
			for ( int j=0;j<Columns;j++)
			{
				if (!IsSquareColored[ (MouseRow-1)*(Columns)+MouseCol] && (MouseCol==j )&& (MouseRow==i)){
					Paint(MouseRow,MouseCol);	
				}
				else  if (IsSquareColored[ (MouseRow-1)*(Columns)+MouseCol] && ((MouseCol!=j ) || (MouseRow!=i))){
					Unpaint(i,j);
				}
			}
		}
	
	}
		
	void Paint(int R,int C)
	{
		
		Color32[] colors= texture.GetPixels32();
		for (int i = (R*Screen.height/Rows);i<((R+1)*Screen.height/Rows);i++)
			for	(int j = (C*Screen.width /Columns);j<((C+1)*Screen.width /Columns);j++)
			colors[i*Screen.width+j].a=1;
		
		
		
		
	
	
		
		
		
		
	}
	void Unpaint(int R,int C){}
	
}

You don’t appear to be setting the pixels back again after your paint function. GetPixels gives you an array that you can play with but you need to use SetPixels32 to set it back and then do a texture.Apply()