There is an important distinction here actually on why you may or may not want to wrap in Surface to get content color set for you properly, or provide your own content color using the means described above.
If the background color set on Surface matches the value of MaterialTheme.color.surface (which I think is the default), and there is an elevation set, then the result background color will be lighter than what you expect. (This is intentional behavior of this component)
It may seem "edge-casy" thing to take into account when just wrapping everything in a Surface, but not really if you are trying to support dark and light theme fully.
Using the option described earlier in this thread may make more sense for you depending on your layout/use case, as you are probably trying to set a specific background color with the intention that the result is that specific color.