When it updates the red channel, the Simple Construction Script (SCS) gets re-run (via AActor::RerunConstructionScripts) on the Blueprint Actor instance generating new instances of all its components. This leads to UEditorEngine::NotifyToolsOfObjectReplacement getting called as there's a mapping of the old components to the new ones. Which ultimately leads to SDetailsView::PostSetObject getting called, which has specific code for closing the color picker if SColorPicker::OptionalOwningDetailsView is invalid or doesn't match the invoking SDetailsView. SColorPicker::OptionalOwningDetailsView isn't set when the color picker is first opened in FCustomPrimitiveDataCustomization::OnMouseButtonDownColorBlock, so this means it's always closed.