There are many sources of systematic variation in microarray experiments which affect the measured gene expression levels. Normalization is the term used to describe the process of removing such variation, e.g. for differences in labeling efficiency between the two fluorescent dyes. In this case, a constant adjustment is commonly used to force the distribution of the log-ratios to have a median of zero for each slide. However, such global normalization approaches are not adequate in situations where dye biases can depend on spot overall intensity and location on the array (print-tip effects). This paper describes normalization methods that account for intensity and spatial dependence in the dye biases for different types of cDNA microarray experiments, including dye-swap experiments. In addition, the choice of the subset of genes to use for normalization is discussed. The subset selected may be different for experiments where only a few genes are expected to be differentially expressed and those where a majority of genes are expected to change. The proposed approaches are illustrated using gene expression data from a study of lipid metabolism in mice.