Grover diffusion operator for a 3 qubit system

I want to make a three qubit system that marks the states where the last qubit is 0. I have made an oracle function but when I try to run the reflection the amplitudes are only higher than the others by around 15%. Is there something I'm missing out on the second reflection/diffusion operator, I'm kinda new to this field so don't know much. I have attached a picture of the second reflection as well as the probabilities:

Reflection:

Probabilities:

New contributor
At2005 is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

It seems that $$\mathrm{CNOT}$$ gates should not be in your circuit. Here is Grover algorithm for 3 qubits:
Put your Oracle instead of dashed line. The Oracle should have three inputs $$q_0$$, $$q_1$$ and $$q_2$$, output should be on qubit $$q_3$$ after $$\mathrm{H}$$ gate.
• @At2005: Yes, you are right that you read marked state on input qubits. But you have to somehow tell to Grover operator ($\mathrm{CZ}$ is part of it) that this state is the right one. The output is used for doing so. Although it can seems that the output is not connected to the Grover operator, it acually is because of entanglement between oracle and output qubit. When the oracle returns one on the output, phase of whole state defined by all qubits is reversed. This reversal is captured by Grover operator and after that the probability of this state is amplified. – Martin Vesely Jan 14 at 22:26
• @At2005: The oracle output is not connected to Grover operator, $CZ$ gate acts on last qubit of input. – Martin Vesely 2 days ago