summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/extension/internal/emf-win32-inout.cpp11
-rw-r--r--src/extension/internal/emf-win32-print.cpp8
2 files changed, 7 insertions, 12 deletions
diff --git a/src/extension/internal/emf-win32-inout.cpp b/src/extension/internal/emf-win32-inout.cpp
index f54bfc6ea..9c8755201 100644
--- a/src/extension/internal/emf-win32-inout.cpp
+++ b/src/extension/internal/emf-win32-inout.cpp
@@ -1654,11 +1654,12 @@ myEnhMetaFileProc(HDC /*hDC*/, HANDLETABLE * /*lpHTable*/, ENHMETARECORD const *
PEMRSETMITERLIMIT pEmr = (PEMRSETMITERLIMIT) lpEMFR;
- float miterlimit = pEmr->eMiterLimit;
- miterlimit = miterlimit * 4.0 / 10.0;
- d->dc[d->level].style.stroke_miterlimit.value = pix_to_size_point( d, miterlimit );
- if (d->dc[d->level].style.stroke_miterlimit.value < 1)
- d->dc[d->level].style.stroke_miterlimit.value = 4.0;
+ //BUG in SetMiterLimit() on mingw, possibly in underlying Windows(at least on XP?)
+ //The function takes a float but saves a 32 bit int in the EMR_SETMITERLIMIT record.
+ float miterlimit = *((int32_t *) &(pEmr->eMiterLimit));
+ d->dc[d->level].style.stroke_miterlimit.value = miterlimit; //ratio, not a pt size
+ if (d->dc[d->level].style.stroke_miterlimit.value < 1.0)
+ d->dc[d->level].style.stroke_miterlimit.value = 1.0;
break;
}
case EMR_BEGINPATH:
diff --git a/src/extension/internal/emf-win32-print.cpp b/src/extension/internal/emf-win32-print.cpp
index ef76c2c14..2b79fd5a4 100644
--- a/src/extension/internal/emf-win32-print.cpp
+++ b/src/extension/internal/emf-win32-print.cpp
@@ -374,13 +374,7 @@ void PrintEmfWin32::create_pen(SPStyle const *style, const Geom::Affine &transfo
if (linejoin == PS_JOIN_MITER) {
float oldmiterlimit;
- float miterlimit = style->stroke_miterlimit.value;
-
- miterlimit = miterlimit * 10.0 / 4.0;
- if (miterlimit < 1)
- miterlimit = 10.0;
-
- miterlimit = miterlimit * IN_PER_PX * dwDPI;
+ float miterlimit = style->stroke_miterlimit.value; //ratio, not a pt size
SetMiterLimit(
hdc,