Heat oven to 350° and line 24 cupcake tins with 24 cupcake liners.
In the bowl of a stand mixer with the whisk attachment whip the eggs for a few minutes until stiff peaks form. Scrape out the bowl and set aside. In the same bowl with the paddle attachment beat the butter, oil and sugar until light and fluffy. Beat in vanilla and almond extract.
In a separate bowl mix the flour, baking powder, baking soda and salt. Add half to the butter and mix until just incorporated. Add half the buttermilk and mix until just incorporated. Do the same for the second half of the flour mixture and the same for the second half of the milk. Fold in the egg whites.
Divide the batter into 6 different bowls and mix each with a different food colouring gel until the desired colour has been achieved. I used red, orange, yellow, green, blue and purple. Fill 6 disposable piping bags with each bowl of batter.
Pipe a very thin layer of red into the bottom of all 24 cupcake liners. You should use up the whole bag. Do the same with the orange then yellow, green, blue and last purple. Bake in the preheated oven for 15-18 minutes, until a toothpick comes out clean. Let rest for ten minutes before transferring the cupcakes to a cooling rack.
Cream Cheese Icing
To make the icing whip the cream cheese in the stand mixer with the paddle attachment until completely smooth. Whip in the butter then vanilla. Mix in sifted icing sugar until desired thickened has been achieved.
Use the bottom of a piping tip to cut a hollow into the centre of each cupcake. Fill the space with rainbow sprinkles and place the cut circle back into the opening. Pipe the cream cheese icing onto each cupcake and top with white sprinkles. Beautiful!