Visual sensitivity can be tuned by differential expression of opsin genes. Among African cichlid fishes, seven cone opsin genes are expressed in different combinations to produce diverse visual sensitivities. To determine the genetic architecture controlling these adaptive differences, we analysed genetic crosses between species expressing different complements of opsin genes. Quantitative genetic analyses suggest that expression is controlled by only a few loci with correlations among some genes. Genetic mapping identifies clear evidence of trans-acting factors in two chromosomal regions that contribute to differences in opsin expression as well as one cis-regulatory region. Therefore, both cis and trans regulation are important. The simple genetic architecture suggested by these results may explain why opsin gene expression is evolutionarily labile, and why similar patterns of expression have evolved repeatedly in different lineages.