Dying cloth requires a fixative or mordant. These help colours bond to fabric, preventing running and fading. Fixatives tend to be toxic, but alum (available from soap supply shops) is a non-toxic option. Use
2–3 teaspoons per 100g of cloth. Mixing it with cream of tartar (1 teaspoon per 100g) will help soften fabric and brighten colours.