You can use QGIS expressions to change or define certain characteristics of colors. If you define this characteristic as custom variable, you have it at hand everywhere in QGIS where colors play a role to adjust it accordingly. You can define the color as a completely random pastel color or as a pastel ("weaker") variant of a defined color.
See a quick animated version with the random version:

To change any characteristic of a color (like hue, saturation etc.), use set_color_part
. See below, Expression to set color to pastel for the exact expression to use if you want to change a solid color to it's pastel version. If you just want to do that, you're done. If you want to use it everywhere in QGIS, proceed to step 2.
It can be set as a project variable (let's call it pastel_color
) and than automatically be used to convert all existing colors in your project to a pastel version of it. The custom variable is defined in the project properties. Once defined there, you just need to add eval(@pastel_color)
in data driven override of those colors you want to set in pastel.

If you play around with the saturation value (20, red box, in the screenshot above), it will affect all colors at once that refer to this variable.
Expression to set color to pastel
The expression to use (either for the variable or paste it individually as data driven override for colors) is as follows. This is to set the existing color to a pastel version. If you want completely random colors in pastel, simply replace the color_part( @symbol_color , '[color]')
part for each of the three colors with rand (0,254)
:
set_color_part(
color_rgb(
color_part( @symbol_color , 'red'),
color_part( @symbol_color , 'green'),
color_part( @symbol_color , 'blue')
),
'saturation',
20
)
It sets the saturation of the input color to 20%: change this value in the second last row as you like to get stronger or weaker colors.
See here the animated gif, using the expression from above without random values, just changing the selected "solid" color to pastel:

See next screenshot to see how it works: the color defined for the polygon is a saturated red, in RGB: 255,0,0
. The expression set_color_part(color,component,value)
takes this as an input (from the variable @symbol_color
: first argument of the function), than accesses the saturation
component of the color (second argument) and sets it's value to 20
(third argument). Play around with this last value to find an ideal setting.
