One option is to add custom CSS (using cell.cssClass) and create styles for all different combinations of classes (they are all applied at the same level): .scheduler_default_cell, .scheduler_default_cellparent, .scheduler_default_cell_business + your custom class.
Another option is to insert an active area into the past cells. If you add a semi-transparent image as a background or add opacity style it will still display the original cell background.
This example adds stripes to past cells using an overlay active area:
dp.onBeforeCellRender = function(args) {
if (args.cell.start < DayPilot.Date.today()) {
args.cell.areas = [
{ left: 0, right: 0, top: 0, bottom: 0, style: "background-image: linear-gradient(135deg, #ddd 10%, transparent 10%, transparent 50%, #ddd 50%, #ddd 60%, transparent 60%, transparent); background-size: 20px 20px;" }
];
}
};
See also:
https://doc.daypilot.org/scheduler/cell-active-areas/