01 - Preheat the oven to 350°F. Grease a 9 x 13-inch baking dish.
02 - Bring a large pot of salted water to a boil. Cook macaroni until just al dente, about 1 to 2 minutes less than package instructions. Drain and set aside.
03 - Melt 4 tablespoons of butter in a large saucepan over medium heat. Whisk in flour and cook, stirring constantly, until lightly golden, about 1 to 2 minutes.
04 - Gradually whisk in whole milk and heavy cream. Continue cooking, whisking constantly, until the sauce thickens and bubbles, about 5 to 7 minutes.
05 - Remove from heat. Stir in cheddar, Gruyère, Dijon mustard, garlic powder, onion powder, salt, and black pepper until cheese is fully melted and sauce is smooth.
06 - Add cooked macaroni to the cheese sauce. Stir to coat evenly, then transfer the mixture into the prepared baking dish.
07 - In a bowl, mix breadcrumbs, melted butter, Parmesan cheese, and paprika if using. Evenly sprinkle the topping over the macaroni and cheese.
08 - Bake for 25 to 30 minutes until the crust is golden brown and the sauce is bubbling.
09 - Allow to rest for 5 to 10 minutes before serving to set and enhance flavors.