Preheat oven to 400°F/206°C. Cook pasta in boiling water for 6 minutes.
Melt butter in a medium pot over medium heat. Add flour and whisk together for 30 seconds. Add salt, black pepper, cayenne, and garlic powder.
Whisk in half and half in thirds, then add cream. Bring to a boil once boiling add 2 cups cheddar and 1 cup mozzarella. Reduce heat to medium low and stir until cheese has melted.
Add the spaghetti to a 9 x 13 casserole dish. Add 1 cup of mozzarella and 1 cup of cheddar. Pour the cheese sauce over, stir to combine, and sprinkle the remaining cheese over top.
Bake for 25 to 30 minutes, until the cheese has browned evenly.
Cut into squares and serve immediately.
