Place the eggs in medium saucepan, cover with 1 inch of water, and bring to boil over high heat. Remove pan from heat, cover, and let sit for 10 minutes. Fill a medium bowl half full with cold water and add 1 tray of ice cubes. Transfer eggs to ice water bath and let sit 5 minutes.
Crack the eggs all over with the back of a spoon but leave the shells on. Place into a ziplock bag or glass container full of cold water that is darkly colored with purple food dye. Let stand overnight.
Remove from dye and peel the shell. Halve the eggs and remove the yolks with a spoon, and place them in the bowl of a food processor. Set the whites aside.
Blend the yolks, mayonnaise, butter, mustard, and dye until smooth in a food processor (if using spinach, puree that first and then add the remaining ingredients and process until smooth). Season with salt and pepper to taste.
Transfer the mixture to a piping bag fitted with a large star tip, or use a plastic sandwich bag with the tip of one corner snipped off. Pipe the yolk mixture into the egg whites, transfer to a serving platter and top with fish roe, if using.