Chained two Many-to-Many relations
Looks like you need a one-to-many between orders_products and Features.

Your orders_products will hold the first part of the order:


OrderItemID, OrderID, quantity, ProductID (e.g. "Item 1: 2 Chocolate Cakes")


and a new table (e.g. order_products_features) will hold the one-to-many relation needed for Features:


OrderItemID, FeatureID (e.g. "for Item 1, add "Plain")
OrderItemID, FeatureID (e.g. "for Item 1, add "Small Size")
OrderItemID, FeatureID (e.g. "for Item 1, add "Diet")


You will need some extra logic to check that users only enter valid Product-Feature combinations into this new table.

Designing it this way means that in the future, if you change the Product-Feature links, you will still have a historical record of what people ordered in the past, even though those Product-Feature links might not be valid today.