To get the fine control over the graphics, I would one probably has to construct each element and combine them. As [@Silvia](http://mathematica.stackexchange.com/users/17/silvia) points out, exclusions cause separate polygons to be created. When rendered on a discrete screen, these may overlap or have gaps. That means drawing the step curve and its filling separately, like this: Plot[Sign[Sin[x]] Ceiling[Abs[Sin[x]], 1/3], {x, -2 Pi, 2 Pi}, PlotStyle -> Red], Plot[Sign[Sin[x]] Ceiling[Abs[Sin[x]], 1/3], {x, -2 Pi, 2 Pi}, PlotStyle -> None, Filling -> Axis, FillingStyle -> Directive[Opacity[0.2], Red], Exclusions -> None] If you don't want to copy, paste, and edit each step function plot, you could write a function to combine both plots, such as the following: SetAttributes[plotWithFilling, HoldAll]; plotWithFilling[Plot[f_, x_, opts___], col_] := Show[ Plot[f, x, PlotStyle -> col, opts], Plot[f, x, PlotStyle -> None, Filling -> Axis, FillingStyle -> Directive[Opacity[0.2], col], Exclusions -> None, opts]]; Usage: Show[ Plot[Sin[x], {x, -2 Pi, 2 Pi}, PlotStyle -> Blue], plotWithFilling[ Plot[Sign[Sin[x]] Ceiling[Abs[Sin[x]], 1/3], {x, -2 Pi, 2 Pi}], Red ], plotWithFilling[ Plot[Sign[Sin[x]] Floor[Abs[Sin[x]], 1/3], {x, -2 Pi, 2 Pi}], Green ], AspectRatio -> 1/Pi, Frame -> False] ![Mathematica graphics](https://i.sstatic.net/GxEaZ.png)