Cook the pasta in boiled salted water according to the package instructions (I prefer to undercook for 1 minute) and then drain.
In a large pot, melt the butter, whisk in the flour, and cook for 1 minute or until light brown.
While whisking, pour in the milk and heavy cream and KEEP WHISKING until smooth and the sauce thickens.
Turn the heat to low and stir in the cheddar and mozzarella cheese (keep a handful to sprinkle on top) until melted. Season with salt, black pepper and garlic powder.
Stir in the cooked pasta until mixed well with the sauce, then turn off the heat.
Spoon the mixture into a 9x12-inch baking dish, sprinkle the rest of the cheese on top and bake in the oven at 350F (180C) for 20 minutes.
Notes
Make sure the cheese sauce is smooth and has no lumps at all.