Texture on top of another Texture

I am trying to extend the Character Customization Example to allow Users to create any color Clothes they want. For the pants I have a white texture and then by adjusting the Materials main color you end up with whatever color pants you selected. Now my problem is that as it stands right now the pants are a single color with no detail in them. I would like to be able to add a “Detail Texture” on top of the base color that would add in Boarders around the pockets or whatever detail we decided to create. The user could then select a detail texture and select the color for it. How would I go about added a texture on top of another texture like that?

If I didn’t make my self clear as to what I wanted I can post a screenshot showing what it is I would like.

Ok well I got the first part of this working great. I am now Dynamically creating a new texture that is 2 pixels by 2 pixels. The Pixels are colored the color the player wants for the Avatars clothes. I then add the texture as the diffuse texture in a material that uses the decal shader. I am now unsure how to go about allowing the player to select the color of the decal.

public class ColorPicker : MonoBehaviour {

    public Texture2D colorPicker;
    public GameObject model;
    public int num;
    Texture2D texture;

	// Use this for initialization
	void Start () {
        // Create a new 2x2 texture ARGB32 (32 bit with alpha) and no mipmaps
        texture = new Texture2D(2, 2, TextureFormat.ARGB32, false);
	}
	
	// Update is called once per frame
	void Update () {
        
	}

    void OnMouseOver()
    {
        if (Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                Color[] colors = new Color[2500];
                Color newColor = colorPicker.GetPixelBilinear(hit.textureCoord.x, hit.textureCoord.y);
                colors[0] = newColor;
                texture.SetPixel(0, 0, newColor);
                texture.SetPixel(1, 0, newColor);
                texture.SetPixel(0, 1, newColor);
                texture.SetPixel(1, 1, newColor);
                // Apply all SetPixel calls
                texture.Apply();
                //model.renderer.material.color = newColor;
                model.renderer.material.mainTexture = texture;
            }
        }
    }
}

Ok well I now have the decals working for the first Color a player picks but when you go to try another color the decals stop being displayed. To change the color I loop through the pixels and for all the white pixels I change the color to the color the player picks. I thought doing that would only change the color in memory but it changes the whole texture for some reason and I end up having to reimport the texture into Unity. Here is my code that I am currently using:

void OnMouseOver()
    {
        if (Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                Color newColor = colorPicker.GetPixelBilinear(hit.textureCoord.x, hit.textureCoord.y);
                Texture2D newTexture = texture;
                Color[] texColors = newTexture.GetPixels(0, 0, 200, 100);
                Color[] newTexColors = new Color[texColors.Length];
                int index = 0;
                foreach (Color c in texColors)
                {
                    Color _c;
                    if (c == Color.white)
                    {
                        Debug.Log("Color is White!");
                        _c = newColor;
                    }
                    else
                    {
                        _c = Color.clear;
                    }

                    newTexColors.SetValue(_c, index);
                    index++;
                }
                newTexture.SetPixels(0,0,200,100,newTexColors);
                newTexture.Apply();
                model.renderer.materials[0].SetTexture("_DecalTex", newTexture);
            }
        }
    }