Despite HTML 5's claims to the contrary, putting block level tags (like DIV) inside inline-level ones (like Anchor) is broken and buggy cross browser; there is a reason that up until HTML 5 came along it was invalid markup, and it's just another example of why I think HTML 5's "loosened structural rules" is a bunch of grade A farm fresh prairie pies.
DIV is block level, don't put inline level tags like A around it... EVEN if HTML 5-tards say it's ok now.
read the "contents" part -- inline-level tags except A.
Inline level tags:
Those are what can/should go inside an anchor. You use any other tags, you're doing something wrong.
The block level tags:
Cannot go inside ANY of the inline-level tags. Simple HTML structural rules that nobody bothered learning, and now HTML 5 just wants to piss all over.
Mind you that's HTML level, NOT CSS "display" -- two separate things even if the display by default in most cases starts out the same.
Which is why I'd lose the DIV and make the anchor display:block; Or as I often say, just as George Carlin said "not every ejaculation deserves a name" not every semantic tag needs a div around it or a class on it. Far too often people add DIV around (or worse inside) things where they aren't doing ANYTHING that couldn't be applied to the other tags already on the page. See the constant wrapping of DIV (or the new idiotic NAV tag) around menu lists -- only time you need to do that is full-width background with a semi-fluid inside; in most cases that means people are adding that extra wrapping element for nothing they couldn't just apply to the UL.
Which is kind-of what it sounds like is your problem, adding a DIV where you don't need one.