# flalign inside list has extra space even after \setlength{\abovedisplayskip}{0pt}

I have defined this environment:

\newenvironment{proofln}{\par \textbf{Proof}\list{}{\leftmargin=10pt\rightmargin=0pt\topsep=0pt}\item\relax}{\endlist\textbf{Q.E.D}}


Now I use it like this:

\begin{proofln}
\setlength{\abovedisplayskip}{0pt}
\setlength{\belowdisplayskip}{0pt}
\begin{flalign*}
&am + bn + (K-K) = d&\\
&= am + K + bn - K&\\
&= am + Kab + bn - Kab&\\
&= a(m + Kb) + b(n - Ka)&
\end{flalign*}
\end{proofln}
\begin{proofln}
abcd
\end{proofln}


And the flaign is still inserting spaces above for some reason.
The bottom proofln is also doing weird - the spacing between content and "Proof" and content and "Q.E.D" is not equal.

How can I fix these issues?