Certain elements of the flag's design are specified by statute, namely 4 USC 1-2:
§1 The flag of the United States shall be thirteen horizontal stripes, alternate red and white; and the union of the flag shall be forty-eight stars, white in a blue field.
§2 On the admission of a new State into the Union one star shall be added to the union of the flag; and such addition shall take effect on the fourth day of July then next succeeding such admission.
The rest of the design is specified by executive order (EO 10834, to be precise). I won't quote the whole thing here, because it's rather heavy on detail, but it includes a couple of tables and a detailed diagram specifying the dimensions of the flag and the arrangement of the stars.
The president can change anything that has been specified by executive order, and can specify additional details that haven't been specified, as long as nothing in the president's order contradicts the statute. Congress can add additional details to the statutory specifications, in which case the president's orders might have to be modified to comply.