    NS_IMETHOD Open(nsIColorPickerShownCallback* aCallback) override;
  
    // For NSColorPanelWrapper.
-   void Update(NSColor* aColor);
-   // Call this method if you are done with this input, but the color picker needs to
-   // stay open as it will be associated to another input
-   void DoneWithRetarget();
-   // Same as DoneWithRetarget + clean the static instance of sColorPanelWrapper,
-@@ -39,12 +39,13 @@ private:
- 
-   static NSColor* GetNSColorFromHexString(const nsAString& aColor);
-   static void GetHexStringFromNSColor(NSColor* aColor, nsAString& aResult);
- 
-   static NSColorPanelWrapper* sColorPanelWrapper;
+@@ -44,6 +44,7 @@
  
    nsString             mTitle;
    nsString             mColor;

-  mColor += ToHexString(convertGdkColorComponent(rgba.red));
-  mColor += ToHexString(convertGdkColorComponent(rgba.green));
-  mColor += ToHexString(convertGdkColorComponent(rgba.blue));
+  guint16 alphaValue;
+  if (mShowsAlpha) {
+    gtk_color_selection_set_current_alpha(WidgetGetColorSelection(color_chooser), &alphaValue);
+  }
+
+  if (alphaValue == 65535) {

       if ((eCSSToken_Ident == mToken.mType) || (eCSSToken_String == mToken.mType)) {
         nsAutoString  value(mToken.mIdent);
         bool gotClosingBracket;
@@ -5401,16 +5406,25 @@
           gotClosingBracket = true;
         } else {
           gotClosingBracket = mToken.IsSymbol(']');
