Preheat the oven to 350. Spray a three- or four-quart baking dish with cooking spray.
While the pasta cooks, combine the shredded cheddar and Gruyere in a large bowl and set it aside.
When the pasta is finished and drained, add it to another bowl and drizzle it with the olive oil and mix to combine. Set it aside.
In a large pot or Dutch oven, melt six tablespoons of butter over medium heat. Whisk in the flour, and continue to stir for one minute. Whisk in the milk and heavy cream until the mixture is smooth. Continue stirring regularly until small bubbles start to form on the surface. Whisk in the salt, pepper and garlic powder and continue cooking, stirring regularly, for about two more minutes. Reserve two cups of the combined cheddar and gruyere, and add the rest to the pot, a handful at a time, whisking in between additions until the sauce is smooth. Once all of the cheese is melted into the sauce, add the pasta. Stir to fully coat the pasta and dump half of it into the prepared baking dish.
Add the rest of the cheddar and gruyere in an even layer and then top with the rest of the macaroni mixture.
In a bowl, combine the panko, parmesan, four tablespoons melted butter and paprika, and stir until all of the bread crumbs are moistened.
Sprinkle the bread crumb mixture on the top of the dish and bake for 30 minutes or until the topping is browned and the cheese is bubbling.