The problem is not the background-color. The problem is, that when the spinner shows, the underlying ouput visibility is set to hidden.
To undo this you have to change the spinner.js code.
Uncomment line 4 (below) and you get what you want: $(".recalculating").siblings(".load-container").siblings('.shiny-bound-output, .shiny-output-error').css('visibility', 'hidden');
It doesn't work perfectly well with datatables, for which the height of the table is not known at the time withspinner is called, and so is estimated. The problem is that, when/if the table is changed, the 'estimated' height is placed, as blank space, above the table.
In that case, I found I need to set proxy.height to zero. The 'spinner' ends up appearing at the top of where the table will appear.