def update_linCD(cdmat, delta_rot=0.0, delta_scale=1.0, cx=[0.0,1.0], cy=[1.0,0.0]):
    """ Modify an existing linear CD matrix with rotation and/or scale changes
        and return a new CD matrix.  If 'cx' and 'cy' are specified, it will
        return a distorted CD matrix.

        Only those terms which are varying need to be specified on input.
    """
    rotmat = fileutil.buildRotMatrix(delta_rot)*delta_scale
    new_lincd = np.dot(cdmat,rotmat)

    cxymat = np.array([[cx[1],cx[0]],[cy[1],cy[0]]])
    new_cd = np.dot(new_lincd,cxymat)

    return new_cd