Repository: Qiskit/qiskit

Issue:
gatefacecolor key has no effect on circuit diagrams
### Information

- **Qiskit Terra version**: 0.9.0
- **Python version**: 3.7.4
- **Operating system**: Ubuntu 18.04.3

### What is the current behavior?

When plotting circuit diagrams, the `gatefacecolor` key has no effect. 

### Steps to reproduce the problem

```python
from qiskit import QuantumRegister, QuantumCircuit, ClassicalRegister

qr = QuantumRegister(3)
cr = ClassicalRegister(1)
qc1 = QuantumCircuit(qr)

qc1.x(qr[1])
qc1.h(range(3))
qc1.cx(qr[1], qr[2])
qc1.cx(qr[0], qr[1])

style = {'gatefacecolor': '#hhhhhh'}

qc1.draw(output='mpl', style=style).show()
```
Produces this image:

![image](https://user-images.githubusercontent.com/14994219/65039957-454d9e00-d94b-11e9-8945-b2efd43b3f70.png)

The same image is produced using any hex colour code or by removing the gatefacecolor key.

### What is the expected behavior?

The gate faces should be white in this example.

### Suggested solutions

A suggested solution was to use `style=False`, which overrides the default styling and produces a black and white diagram. However, this would not allow the use of other desired style keys such as `'usepiformat': 'true'`.



Discussion:
Working on it

There is a possible overwrite of colors in qiskit/visualization/matplotlib.py
@bjader, I think it's fixed, please test it and see if the colors are like you expect.

`style = {'gatefacecolor': '#FF0000'}`

![](https://user-images.githubusercontent.com/11366772/65526975-3be7a700-def2-11e9-9ae3-a3dbba345830.png)


Resolving patch:
diff --git a/qiskit/visualization/matplotlib.py b/qiskit/visualization/matplotlib.py
--- a/qiskit/visualization/matplotlib.py
+++ b/qiskit/visualization/matplotlib.py
@@ -185,7 +185,10 @@ def _custom_multiqubit_gate(self, xy, fc=None, wide=True, text=None,
             _fc = fc
         else:
             if self._style.name != 'bw':
-                _fc = self._style.dispcol['multi']
+                if self._style.gc != DefaultStyle().gc:
+                    _fc = self._style.gc
+                else:
+                    _fc = self._style.dispcol['multi']
                 _ec = self._style.dispcol['multi']
             else:
                 _fc = self._style.gc
@@ -238,6 +241,8 @@ def _gate(self, xy, fc=None, wide=False, text=None, subtext=None):
             wid = WID
         if fc:
             _fc = fc
+        elif self._style.gc != DefaultStyle().gc:
+            _fc = self._style.gc
         elif text and text in self._style.dispcol:
             _fc = self._style.dispcol[text]
         else:
@@ -382,6 +387,9 @@ def _conds(self, xy, istrue=False):
         self.ax.add_patch(box)
 
     def _ctrl_qubit(self, xy, fc=None, ec=None):
+        if self._style.gc != DefaultStyle().gc:
+            fc = self._style.gc
+            ec = self._style.gc
         if fc is None:
             fc = self._style.lc
         if ec is None:
@@ -394,6 +402,9 @@ def _ctrl_qubit(self, xy, fc=None, ec=None):
 
     def _tgt_qubit(self, xy, fc=None, ec=None, ac=None,
                    add_width=None):
+        if self._style.gc != DefaultStyle().gc:
+            fc = self._style.gc
+            ec = self._style.gc
         if fc is None:
             fc = self._style.dispcol['target']
         if ec is None:


Test patch: